Şu an çevrimiçi  

AppointmentTrader API Dokümantasyonu

Rezervasyonları Programlı Olarak Alıp Satmak İçin Resmi API Dokümantasyonu

Temel URL https://tr.appointmenttrader.com/v1/
Kimlik Doğrulama Pass your API key as the key parameter (URL-encoded) on every request. Production keys are issued after identity verification; test keys are available before.
Metodlar GET for read-only endpoints (get_*), POST for everything else. Both verbs are accepted; choose by intent.
Yanıt şekli All responses return a JSON envelope: { "RequestStatus": "Succeeded" | "Failed", "ResponseCode": "...", "ResponseMessage": "...", "Payload": ... }. The Yük shape per endpoint is documented under "Returns" below.
AI ajanları için Append ?explain to any endpoint URL for the live machine-readable docblock (parameters, types, example values, return shape) — every endpoint card below links to its ?explain output.

Your API Keys

OR
Sign-in to enable API accessBy tapping the button above you accept our Privacy Policy ve Terms of Service

Uç nokta dizini

Every endpoint your account has access to. Click any row to jump to its full reference below.

Metod Yol Özet
GET /v1/tools/get_convert_currency Converts a currency amount
GET /v1/tools/get_geoip_data Returns geolocation data from an ipaddress
POST /v1/tools/set_mouseflow_recording Enable or disable Mouseflow recording for the current user or for everybody. Requires AccessSpecialFunctions.
GET /v1/community/get_administration_board_options Searches live discussion boards for the v2 Administration live-board editor.
GET /v1/community/get_board_about_post_candidates Finds board-local top-level posts that can be selected as the board profile About post.
GET /v1/community/get_chat_actions Returns every currently executable action button registered for a chat.
GET /v1/community/get_chat_add_participant_options Returns user alias options that the acting user may add to a chat. Chat hosts only see users who accepted a 1:1 chat with the host. Global community administrators can search all non-deleted users. The write endpoint repeats these checks; this endpoint is only for autocomplete UX.
GET /v1/community/get_chat_messages Returns the most recent messages for a chat the calling user has access to.
GET /v1/community/get_chat_summary Returns an overview of a chat, including participant and media totals.
GET /v1/community/get_chats Returns the chats and chat groups visible to the requesting user.
GET /v1/community/get_forum_feed Returns one page of posts attached to a single community forum board.
GET /v1/community/get_forum_profile Returns public profile metadata for a community forum board.
GET /v1/community/get_location_about_post_candidates Finds top-level public community posts connected to a location that can be selected as the location profile About post.
GET /v1/community/get_location_feed Returns one page of public community posts attached to a location profile. Public-by-design: public location profile feeds are readable by anonymous viewers; restricted boards are still filtered by Community::GetPostsByBoardID.
GET /v1/community/get_newsfeed Returns one page of newsfeed posts as structured JSON.
GET /v1/community/get_newsfeed_comment Returns one authorized serialized newsfeed comment after a live comment nudge.
GET /v1/community/get_newsfeed_post Returns one full newsfeed post with its direct comments and subcomments expanded.
GET /v1/community/get_newsfeed_replies Returns the first N replies for a post (direct children only, oldest-first).
GET /v1/community/get_newsfeed_reply_example Returns short AI-generated example replies for the v2 post detail reply composer. The examples are display-only typewriter prompts. They are never submitted automatically and are cached by post content, viewer role, and active locale.
GET /v1/community/get_post_action_permissions Returns call-time action permissions for one newsfeed post. This intentionally checks only the selected post, not every feed card
GET /v1/community/get_post_actions Returns visible action buttons for one community post.
GET /v1/community/get_post_forum_move_options Returns same-intent forum choices for moving a top-level community post.
GET /v1/community/get_post_presence Returns signed-in users who have viewed a thread, plus live socket presence for that thread. Public-by-design: public community boards expose thread viewer identity to readers of that thread; restricted boards remain gated except for the selected board About thread.
GET /v1/community/get_post_reposts Returns people who reposted a visible community post.
GET /v1/community/get_reaction_options Returns the emoji reaction allowlist used by posts and chat messages.
GET /v1/community/get_reactions Returns emoji reaction totals for a post or chat message.
GET /v1/community/get_repost_composer_context Returns the context required to open the composer for a rich repost. The source post is serialized through the same newsfeed post serializer
POST /v1/community/set_add_post_media Adds uploaded media to a post owned by the current user.
POST /v1/community/set_apply_for_board_president Applies to lead a community board that does not currently have a president.
POST /v1/community/set_board_about_post Sets or clears a community board profile About post and optional image selections from that post's attached media.
POST /v1/community/set_board_president Assigns, clears, approves, or rejects a board president.
POST /v1/community/set_board_secretary Assigns or clears a board secretary and delegated board-scoped capabilities.
POST /v1/community/set_chat_action Executes a chat action button owned by the calling user.
POST /v1/community/set_chat_add_participant Adds one user to a chat. Hosts may add only users who accepted a 1:1 chat with that host. Global community administrators may add any non-deleted user by alias. Existing participants return success without writing a duplicate access row.
POST /v1/community/set_chat_archive Archives a chat visible to the calling user.
POST /v1/community/set_chat_message Sends a message into a chat the calling user has access to.
POST /v1/community/set_chat_minimized_unread_dismissal Saves the caller's minimized unread chat dismissal through the latest
POST /v1/community/set_chat_mute Mutes or unmutes one chat for the requesting user.
POST /v1/community/set_chat_name Renames a chat. Only the chat host (Creator-ATUser_ID) may rename.
POST /v1/community/set_chat_pin Pins or unpins a chat for the requesting user's v2 chat lists.
POST /v1/community/set_chat_read Marks every unread notification belonging to this chat as Read for the
POST /v1/community/set_chat_typing Relays ephemeral chat typing presence to other participants.
POST /v1/community/set_create_poll_answer_for_question Create a new answer option for the Question
POST /v1/community/set_create_poll_question_for_post Create a new poll question for the Post
POST /v1/community/set_create_post Composer endpoint - creates a post (or top-level reply) in a board. Wraps Community::CreatePost so iOSAndroid and the v2 web client share one path. Throttled to one post per 15 seconds per session (same as the legacy APIcreate_post.php).
POST /v1/community/set_create_review Creates a verified review post for a location or a post-sale counterparty review request.
POST /v1/community/set_delete_post Deletes a community post when the viewer has delete rights.
POST /v1/community/set_location_about_post Sets or clears a location profile About post and optional image selections from that post's attached media. Any signed-in user may set the selected intro; only the post author may change the selected post title.
POST /v1/community/set_newsfeed_filter_state Saves the signed-in viewer's per-feed v2 newsfeed filter state.
POST /v1/community/set_post_action Executes a visible action button for one community post.
POST /v1/community/set_post_forum Moves a top-level community post into another forum with the same composer intent.
POST /v1/community/set_post_public_release_date Sets or clears the public release date for a top-level community post.
POST /v1/community/set_reaction Sets, switches, or removes the caller's emoji reaction.
POST /v1/community/set_record_post_big_view_open Records that the viewer opened the immersive newsfeed post view.
POST /v1/community/set_record_post_view Records that the viewer has seen a newsfeed post.
POST /v1/community/set_report_post Reports a community post to moderators.
POST /v1/community/set_submit_vote_for_question Saves a poll answer
POST /v1/community/set_thumbs_up Toggles the current user's legacy thumbs-up reaction on a post.
POST /v1/community/set_track_chat_mention_click Records a click on a venueuser mention inside a chat message. Used by the v2 chat dock before normal navigation. Venue clicks can make the sender eligible for the existing short direct-hire bid window.
POST /v1/community/set_track_mention_click Records a click on a post's tagmention chip.
POST /v1/community/set_url_preview Fetches, sanitizes, and stores a URL preview for an authenticated rich-input composer action. The preview fetch happens only on behalf of the creator before send. The saved card stores titledescriptionsite metadata and, when available, a locally cached image ATMedia record. Readers render only persisted metadatalocal media and never fetch remote preview assets.
GET /v1/external_messaging/get_billing_settings Returns billing settings and the selected default AT funding account.
GET /v1/external_messaging/get_channels Returns supported external messaging channels.
GET /v1/external_messaging/get_delivery_health Returns delivery health counters for the API user.
GET /v1/external_messaging/get_events Returns the event timeline for a message.
GET /v1/external_messaging/get_identities Returns sender identities owned by the API user.
GET /v1/external_messaging/get_identity_dns_status Returns expected and last observed DNS state for an identity.
GET /v1/external_messaging/get_message Returns a queuedsent message by numeric ID or UUID.
GET /v1/external_messaging/get_messages Returns recent messages for the API user.
GET /v1/external_messaging/get_suppressions Returns active suppressions for the API user.
POST /v1/external_messaging/set_billing_account Sets the default AT account used to pay for accepted production messages.
POST /v1/external_messaging/set_identity Creates an email sender identity and returns the DNS records needed for verification.
POST /v1/external_messaging/set_identity_verify_dns Checks DNS records for an email sender identity and marks it verified when required records are present.
POST /v1/external_messaging/set_mta_event Records an internal first-party MTA event for a message.
POST /v1/external_messaging/set_send Queues an external message. Phase one supports email only. Production email requires a verified sender identity and is charged after the first-party MTA records smtp_accepted. Sandbox messages are free and do not submit to the MTA.
POST /v1/external_messaging/set_suppression Adds a user-level suppression for a recipient.
POST /v1/user/get Searches all user aliasses
GET /v1/user/get_alternative_access_userlist List of users who can access this account
GET /v1/user/get_alternative_session_lifetime_presets Returns a commonly used list of preset values
GET /v1/user/get_community_verification_center Returns the acting user's community verification center payload. This powers the native v2 account verification center. The invitee verification flow remains the existing verify{uuid} route; this endpoint only exposes the owner's current status, share link, editable verification details, and verifier strength list.
GET /v1/user/get_details Returns details of the acting API User
GET /v1/user/get_evaluate_permission Returns the current value of the requested permission
GET /v1/user/get_profile Returns a public profile payload for a user, suitable for rendering a profile screen or sharing externally. The response is viewer-aware: sensitive metrics (chargeback rate, vendor balances, U2U transfers, ...) are only included when the calling API user has the AccessSpecialFunctions permission. Anonymous callers receive the public subset. Public-by-design: profile pages are public unless the owner has set a visibility threshold; privatesensitive fields are gated before they are added to the response.
GET /v1/user/get_profile_about_post_candidates Finds public community posts that can be selected as the current user's profileAbout Me post.
GET /v1/user/get_profile_about_post_profiles Returns the public profiles currently using a community post as their profileAbout Me post. Public-by-design: the newsfeed already exposes the aggregate profile-use count on public post cards. This endpoint only returns profiles the current viewer is allowed to open under the profile visibility settings.
GET /v1/user/get_profile_additional_metrics Returns the expanded, non-hero metrics for a profile. Public-by-design: this mirrors the public profile metric rules unless the owner has set a visibility threshold. Sensitive metrics remain gated by the existing AccessSpecialFunctions checks inside LoadProfileContent.
GET /v1/user/get_profile_media_gallery Returns image media for the public profile gallery from the selected About Me post only. Public-by-design: profile pages are public unless the owner has set a visibility threshold. Locked profiles return an authorization error.
GET /v1/user/get_profile_sales_history Returns v2 profile sales history scoped for the acting viewer. AccessSpecialFunctions users see all buyerseller trades for the target user. Normal users see only trades where they were the counterparty, or all of their own trades when inspecting their own profile.
GET /v1/user/get_profile_setup Returns the acting user's reusable v2 profile setup onboarding payload.
GET /v1/user/get_profile_setup_city_options Searches city homebase options for the reusable profile setup insert.
GET /v1/user/get_profile_setup_status Returns the acting user's lightweight v2 profile setup status. This intentionally skips display context such as suggested users, communities, seller venue stats, verifier lists, and venue detail cards.
GET /v1/user/get_profile_visibility_preview Previews which public medalusergroup tiers can see a profile at a given importance-points threshold, including the highest-ranked verified users by total importance points.
GET /v1/user/get_profile_visitors Returns signed-in visitors for a profile. Auth: the profile owner needs Permission::SeeProfileInsights to see their own visitor identities. Administrators with Permission::AccessSpecialFunctions can inspect other profiles. Anonymous or IP-only profile views are counted in the aggregate but are never exposed here.
GET /v1/user/get_relationship_block_list Returns users blocked by the current viewer.
GET /v1/user/get_relationship_controls Returns the current viewer's blockmute controls for a target user.
GET /v1/user/get_transaction_history Returns transaction history for the user
GET /v1/user/get_user_to_user_chat_tag_id Returns the chat id for the user-to-user chat
GET /v1/user/get_usergroup_memberships Returns medal and usergroup memberships for an inspected user.
GET /v1/user/get_verification_invite Returns the public invite payload for a verify{uuid} community verification link. Public-by-design: possession of the verification UUID is the invite authorization. This endpoint exposes only the target identity details already shown to anyone opening the invite and the acting viewer's ability to cast a verification vote.
POST /v1/user/set_avatar Sets the user's avatar (an emoji). Replaces the legacy modulescommunitychangeprofile.php flow with a v2-friendly apiv1 surface that the v2 user-profile "MY ACCOUNT" panel can call directly. The v1 page stays in place as the non-v2 fallback. Reuses \AT\User::SetUserAvatar(), which already strips non-emoji characters and writes only when a single grapheme remains -- we do not re-implement that validation here.
POST /v1/user/set_bid_user_to_user_chat_request Starts or reopens a bid customer chat after checking bid chat availability. Preserves the legacy customer-chat rule: the viewer must be the buyer or current holder of the bid, the target must be the bid counterparty, and the direct user-to-user chat must be available for that pair.
POST /v1/user/set_community_verifiable_details Sets the users community verifable details, each change will reset all community verifications
POST /v1/user/set_delete Deletes the requesting user after email-code confirmation. The confirmation code must be requested through userset_request_delete_code and must match the code sent to the email address on file. Deletion is blocked when any active non-corporate user account has a negative currency balance.
POST /v1/user/set_grant_access Give another user access to this account
POST /v1/user/set_initiate_suspension Initiates the user suspension process
POST /v1/user/set_permission_default_payload Sets the default payload for one permission.
POST /v1/user/set_permission_override Sets or clears a direct permission override for one user.
POST /v1/user/set_profile_about_post Sets or clears the current user's profileAbout Me community post and optional image selections from that post's attached media.
POST /v1/user/set_profile_chat_settings Updates whether the current user's profile accepts new low-friction chat requests. Existing marketplace-required chats and transactionsupport chats are not disabled by this setting.
POST /v1/user/set_profile_homebase Saves the acting user's profile setup homebase city.
POST /v1/user/set_profile_intent Updates the current user's profile intent.
POST /v1/user/set_profile_setup_follows Follows or unfollows profile setup users, boards, and locations, including boards derived from seller in-list venues when following.
POST /v1/user/set_profile_visibility Updates the current user's profile visibility threshold. The threshold is based on a viewer's cached total importance points. A threshold of 0 means "Any" and keeps the profile visible to everyone.
POST /v1/user/set_referred_user Link a user to be a referred
POST /v1/user/set_reinstate Reinstate user privileges
POST /v1/user/set_relationship_block Blocks or unblocks a user for optional user-to-user contact.
POST /v1/user/set_relationship_mute Mutes or unmutes a user for viewer-side chat urgency.
POST /v1/user/set_relationship_note Saves or clears the current viewer's private note about a target user. The note is private to the current viewer and is not shown to the target user.
POST /v1/user/set_request_delete_code Sends an account deletion confirmation code to the email address on file. The code is stored in the existing ATUser.AuthCode fields with AuthCodeOrigin set to DeleteUser, and expires after 15 minutes.
POST /v1/user/set_revoke_alternative_access Revoke another user's access to this account.
POST /v1/user/set_user_to_user_chat_decision Accepts or denies a pending user-to-user profile chat request.
POST /v1/user/set_user_to_user_chat_request Starts or reopens a user-to-user profile chat request. If the existing marketplace chat permission already allows the pair, the chat is immediately sendable. Otherwise the target user receives an in-chat request decision and the requester may send one opening message.
POST /v1/user/set_verify Verifies another user
GET /v1/marketdata/get_city_hot_list Returns the most-traded venues in a given city, with rank-change deltas. Powers the per-city Hot List page at market-data.
GET /v1/marketdata/get_continent_country_top Returns the top cities of an editorial continent, grouped by country. Editorial continents are: NA (North America incl. CanadaMexico), EU (Europe), AS (Asia, excluding Middle East), MEA (Middle East & Africa), SA (South America), OC (Oceania).
GET /v1/marketdata/get_highest_converting_locations Returns the best converting venues, indicating the most demand for listings
GET /v1/marketdata/get_map_points Returns signed-in Market Data map points for overview and city Hot List map panels.
GET /v1/marketdata/get_most_bids_least_asks Returns locations with the highest bids vs listing ratio
GET /v1/marketdata/get_most_underserved_locations Returns locations with the most bids and the least number of listings in the past 30 days
GET /v1/marketdata/get_most_viewed_locations_with_least_listings Returns the most viewed locations with the least amount of listings
GET /v1/marketdata/get_recently_viewed Returns signed-in caller-scoped recently viewed listings, marketplace locations, cities, communities, profiles, plus viewer-owned My Plans and active request tiles when available. Public-by-design: anonymous callers do not read sessionIP recently viewed history and receive the trending fallback instead. Signed-in callers receive only their own user-scoped history, caller-owned plan and pending-request summaries, and profile views recorded for that caller. It exposes no private history, plans, or requests for other users.
GET /v1/marketdata/get_required_inventory_forecast Returns inventory that may have high chance of selling based on historical data
GET /v1/marketdata/get_toplist Returns locations with the most bids and the least number of listings in the past 30 days
GET /v1/marketdata/get_trending_near Returns the cities trending closest to a given latlong. Resolves the closest city via ATAirport proximity, then returns cities within that city's continent ordered by distance, using activity as the tie-breaker. Used by the Market Data page's "Trending near you" row.
GET /v1/marketdata/get_wall_of_fame Returns all public Wall of Fame leaderboards for the requested scope and timeframe. Public-by-design: Wall of Fame cards expose public user aliases, avatars, selected public profilebanner images, profile links, ranks, transaction counts, and rounded amount labels only. Raw transaction and bonus amounts stay internal to the cached ranking helper.
GET /v1/marketdata/get_wall_of_fame_list Returns one public Wall of Fame leaderboard. Public-by-design: the response intentionally excludes exact raw cents and only emits rounded public amount labels plus public user identity fields and selected public profilebanner images.
GET /v1/marketdata/get_world_top Returns the top cities worldwide ordered by recent trading activity. Used by the Market Data overview page's "World's Top N" header section.
GET /v1/beta_program/get_invite_commission_preview Return the legacy invite-friends commission preview as structured data, using the authenticated user's current commission permissions.
GET /v1/beta_program/get_invites Return the authenticated user's beta invite summary, including remaining credits, return credits from redeemed codes, active unused codes, and redeemed codes with claimant details.
POST /v1/beta_program/set_create_contextual_invite_link Create a reusable invite link with optional onboarding context. While the beta invite gate is enabled, the link carries a beta code; when the gate is later disabled, the same link shape still carries referralcontext.
POST /v1/beta_program/set_create_invite_code Create one unused beta invite code if the authenticated user has invite credits remaining. Creating an unused code consumes one visible credit.
POST /v1/beta_program/set_revoke_invite_code Revoke an unused beta invite code owned by the authenticated user. Revoking an unused code returns one visible invite credit.
POST /v1/beta_program/set_send_administration_invite_code Create an admin-issued beta invite code for a logged-in beta interest row and notify the target user with the code. Requires AccessSpecialFunctions.
GET /v1/concierge/get_available_listing_container Returns the exact-match direct-listing container for the v2 composer. Public-by-design: read-only renderer for already-public listing availability; listing purchase and offer placement keep their existing authpayment gates.
GET /v1/concierge/get_available_listings Returns sanitized direct listings for the v2 composer buy flow.
GET /v1/concierge/get_bid_listing_container Returns the reusable v2 listing composer mounted for a held bid fill.
GET /v1/concierge/get_buy_container Returns the rich HTML + executable JS envelope for the v2 composer's
GET /v1/concierge/get_categorize_request Parses a free-form composer request into a per-intent checklist state.
GET /v1/concierge/get_classify_category Classifies a composer request into one active marketplace category before
GET /v1/concierge/get_classify_intent Classifies the high-level intent of a free-form composer string into one of eight buckets so the v2 Intent Composer can pick the right rich UI BEFORE firing the heavier get_categorize_request parse. Uses a thinfast model (gpt-4.1-mini) and returns {intent: "buy" | "sell" | "editorial" | "review" | "socialize" | "sharePlans" | "market_data" | "events"} plus optional postTarget for author-centered regular posts. The model prompt says "community_discussion" for the legacy internal "socialize" bucket so it is not confused with sharePlans.
GET /v1/concierge/get_composer_board_options Searches discussion boards available to the current viewer for the v2
GET /v1/concierge/get_comps Returns comparable-pricing data (slider Hot Zone bounds, fill-probability buckets, recent-fill marquee HTML) for a parsed concierge request. Wraps APIGetComps.php. The composer reads MetaData.BidSliderData for slider minmaxvaluehotZone and DOMElements.MedianBidPriceTicker.innerHTML for the recent-fills marquee verbatim.
GET /v1/concierge/get_copy_request_share Returns the exact composer request text and whitelisted optional share state for a UUID-backed shared composer link. Public-by-design: possession of the opaque copy request UUID is the share credential; the response excludes row IDs, user IDs, sessions, parser payloads, and media.
GET /v1/concierge/get_global_concierge_count Returns the global count of available "fill-bid" concierges, used by the v2 Intent Composer's empty state ("{N} concierges waiting for requests"). Wraps the same library call modulesconciergeindex.php uses inline (\AT\ATLocation::GetNumberBidFillers).
GET /v1/concierge/get_intent_composer_result Runs the full v2 Intent Composer parse pipeline in one request. This preserves the same modular stages as the granular endpoints, but calls them inside PHP so the browser avoids classify -> categorize ->
GET /v1/concierge/get_listing_container Returns the rich HTML + executable JS envelope for the v2 composer's
GET /v1/concierge/get_listing_edit_container Returns the reusable v2 listing editor mounted for an off-market seller listing or rejected listing resubmit.
GET /v1/concierge/get_listing_price_context Returns sell-side price guidance for a listing draft.
GET /v1/concierge/get_localized_bidamount_and_fee Returns the fee-inclusive bid amount, standardpremium fees, and legal disclaimer strings for a given bid amount + location. The displayed CTA copy ("Offer $171 to N concierges") uses BidAmountInclStandardFee 100, NOT the raw slider value. Wraps APIget_localized_bidamount_and_fee.php.
GET /v1/concierge/get_location_options Returns venuelocation options for reusable v2 composer selectors.
GET /v1/concierge/get_location_sellers Returns the seller list, race-statement, and summary metrics ("Secured N times", "starts working in N seconds", "X concierges will race...") for a parsed concierge request at a specific bid amount. Wraps APIget_location_sellers.php. The SummaryStatement and UserStatement fields come back as pre-rendered HTML and are intended to be dropped into the composer's stat slots verbatim.
GET /v1/concierge/get_personalized_available_listings Returns saved-city-market direct listings for the signed-in viewer's composer.
GET /v1/concierge/get_placeholder_examples Returns entries for the v2 Intent Composer typewriter.
GET /v1/concierge/get_review_location_options Returns venuelocation options for the v2 Intent Composer review panel.
POST /v1/concierge/set_bid_listing Updates the draft bid answer linked to a held bid and completes or submits the fill.
POST /v1/concierge/set_copy_request_share_state Saves the current optional, whitelisted composer share state for a UUID-backed request row immediately before the browser shares the link. Public-by-design: logged-out composers can share; writes still require matching SearchRequestID + CopyRequestUUID plus the authenticated owner or same PHP session.
POST /v1/concierge/set_listing_media Uploads a listing image and creates an ATMedia row that can be used by
POST /v1/concierge/set_search_request_media Stores ATMedia ids uploaded through the v2 Intent Composer on the
GET /v1/location/get_category Returns the locations category type (f.i. Restaurant or Prepaid-Restaurant) and the required field list for listings of this category.
GET /v1/location/get_category_list Searches all categories
GET /v1/location/get_city_list Searches all cities
GET /v1/location/get_comparable_trades Returns comparable price information for any inventory type and date.
GET /v1/location/get_inventory_types Returns the inventory types available for the requested location.
GET /v1/location/get_list Searches all location aliasses
GET /v1/location/get_metric_history Returns history of location metrics across a defined timeframe
GET /v1/location/get_metrics Returns detailed 90 day location trading metrics
GET /v1/location/get_new_location_duplicate_options Returns possible existing locations before a user proposes a missing venue. Public-by-design: read-only same-site duplicate suggestions are shown before submit so logged-out users can see whether a venue already exists before authentication.
GET /v1/location/get_profile Returns public profile metadata and regulation-derived capabilities for a location.
GET /v1/location/get_related_location_list Returns locations that are related to locationAlias
POST /v1/location/set Create a Location
POST /v1/location/set_confirm_proposed_location Confirms a proposed missing location. Three distinct eligible confirmations promote it into ATLocation.
POST /v1/location/set_custom_region Splits a larger geographical area into a smaller one
POST /v1/location/set_general_opening_hours Set a locations opening hours.
POST /v1/location/set_inventory_type Creates a location-specific inventory type when no existing type has the requested name.
POST /v1/location/set_listing Submits a new listing for review or if the user has the Permission::SelfReviewListings the listing will be approved. If the timeframe and price matches a vacant bid, the bid will be filled automatically. Please keep in mind that account limits apply as posted in the permission overview of your account.
POST /v1/location/set_proposed_location Posts a proposed missing location to a city board for community verification.
POST /v1/location/set_subscribe_to_city_area_priority_bids Subscribe to Concierge Bids for the Area
POST /v1/location/set_subscribe_to_location_priority_bids Subscribe to Insider Bids
POST /v1/location/set_unlock_exact_listing_times Unlock Exact Listing Times
POST /v1/location/set_unsubscribe_from_city_area_priority_bids Unsubscribe from Concierge Bids for the Area
POST /v1/location/set_unsubscribe_from_location_priority_bids Unsubscribe from Insider Bids
GET /v1/events/get_event Return the editable event payload for the rich event card editor. Requires the caller to be the event originator or hold GlobalCommunityAdministration.
GET /v1/events/get_event_associated_venues Returns venues associated with an event (i.e. venues that benefit from demand lift during the event's date window). Reads from the ATLocationEvents/ATLocation join table populated by set_event_venue_association.
GET /v1/events/get_event_candidates Search existing public-facing real-world events for composer attachment. Public-by-design: read-only public event picker candidate search for composer attachment.
GET /v1/events/get_event_categories Search existing event categories for the v2 composer event picker. Public-by-design: read-only public event picker category list for composer attachment.
GET /v1/events/get_event_location_options Search physical-location choices for the rich event card map picker. Requires the caller to be the event originator or hold GlobalCommunityAdministration.
GET /v1/events/get_event_occurrences Return detailed occurrence rows for a selected public event. Public-by-design: read-only public event picker occurrence list for composer attachment.
GET /v1/events/get_event_place_details Resolve a Google placeaddress suggestion for the rich event card map picker. Requires the caller to be the event originator or hold GlobalCommunityAdministration.
GET /v1/events/get_event_summary Returns a single event resolved by URL slug. Includes the owning post URL so callers can route the user into the existing forum viewer for the full event view (per the events feature design — there is no dedicated event detail page; the forum viewer is the event viewer).
GET /v1/events/get_events_in_city Returns real-world events whose effect radius covers a given city, OR whose pinned venue (Event-ATLocation_ID) is in that city, OR whose associated venues (ATLocationEvents/ATLocation) include any venue in that city. "In range" is computed as ST_Distance_Sphere(EventLocation, cityCenter) <= EffectRadiusInMeters, where the city center is the IsScheduled=1 airport's Coordinates (falling back to any airport row for the slug).
GET /v1/events/get_events_near Returns the top real-world events near a given latlong, ranked by geographic proximity then by next upcoming occurrence. Distance is computed against EventLocation (POINT) using ST_Distance_Sphere. Events pinned to a venue (Event-ATLocation_ID set, EventLocation null) fall back to the venue's coordinates via a sub-join.
GET /v1/events/get_top_events Returns the top real-world events globally, ranked by next upcoming occurrence. Filters to events with EventLocation set or Event-ATLocation_ID set so recurring weekday demand patterns and national holidays are excluded.
POST /v1/events/set_create_event Create a real-world event from the v2 composer event picker. Requires CreateEvent. The permission defaults to true so staff can disable it only for users who abuse event creation.
POST /v1/events/set_event Edit an existing event. Empty -1 sentinel values mean "leave unchanged." Requires the caller to be the event originator or hold GlobalCommunityAdministration. Use "__clear__" for optional stringlist fields that should be cleared.
POST /v1/events/set_event_category Create a reusable event category from the v2 composer event picker. Requires GlobalCommunityAdministration because event categories are global taxonomy, not per-post user content.
POST /v1/events/set_event_location Creates or proposes a missing location from an event surface, then keeps the resulting location tied to that event. Signed-in users with CreateEventLocationDirectly (or GlobalCommunityAdministration) createmerge the ATLocation immediately. Other signed-in users create an event-linked new-location proposal post that follows the normal confirmation workflow; once promoted, the location is linked to the event automatically.
POST /v1/events/set_event_occurrence Create a datetime occurrence for an existing event from the composer picker. Requires CreateEvent, the same default-on abuse-control permission used for event creation. Event originators and GlobalCommunityAdministration may also add rows through the normal event-edit permission path.
POST /v1/events/set_event_venue_association Add or remove an association between an event and a venue (ATLocation). Tags drive demand projections and the venue-transaction royalty.
GET /v1/partner/get_bulk_availability_template Get the CSV columns and example row for bulk venue availability imports.
GET /v1/partner/get_inventory Get location-specific inventory types and linked community posts for a managed venue.
GET /v1/partner/get_listing_regulation_policy Get the venue listing-regulation override policy for a managed venue.
GET /v1/partner/get_location_claim_options Search venues that can be selected for a partner management claim.
GET /v1/partner/get_location_dashboard Get overview demand, listing, sales, and conversion signals for a managed venue.
GET /v1/partner/get_location_inventory_forecast Get a managed venue's inventory forecast using the same market-insight engine as the seller forecast, without public API pricing.
GET /v1/partner/get_location_likeness_group Get saved similar restaurants and suggested related restaurants for a managed venue forecast.
GET /v1/partner/get_location_likeness_options Search restaurants that can be added to a managed venue's similarity group.
GET /v1/partner/get_location_livestream Get the featured livestream post for a managed venue.
GET /v1/partner/get_locations Get the venue locations this user can manage through partner roles, global community administration, or the legacy location-user grant.
GET /v1/partner/get_opening_hours Get weekly recurring opening-hour windows for a venue the current user may edit.
GET /v1/partner/get_team Get active team members, pending invites, and recent partner audit events for a managed venue.
POST /v1/partner/set_bulk_availability Validate or create bulk dated availability for a managed venue. Created rows become normal ATAppointment listings.
POST /v1/partner/set_delete_location Preview or delete a location for failing community standards. Deletion is admin-only and applies new-location reward penalties when applicable.
POST /v1/partner/set_inventory_type Create or update a location-specific inventory type for a managed venue.
POST /v1/partner/set_inventory_type_post_link Link a community post to a venue inventory type.
POST /v1/partner/set_listing_regulation_policy Save the venue listing-regulation override policy. Only venue OwnersAdmins, legacy venue managers, and global community administrators may save.
POST /v1/partner/set_location_claim_request Request management access to a location. The request is sent to GlobalCommunityAdministration users in a chat with approvereject action buttons.
POST /v1/partner/set_location_likeness_group Save the managed venue's similarity group used by partner inventory forecasts.
POST /v1/partner/set_location_livestream_post Feature a location-connected community post as the venue livestream station, or create a new station post and feature it.
POST /v1/partner/set_opening_hours Validate or save weekly recurring split opening hours for a managed venue.
POST /v1/partner/set_team_invite Create or accept a role-scoped venue team invite. Creating an invite preserves normal referral attribution through the returned URL's v parameter.
POST /v1/partner/set_team_member_remove Remove a user from a venue team.
POST /v1/partner/set_team_member_role Add an existing user to a venue team or change that user's partner role.
GET /v1/sidebar/get_plans_render Returns only the server-rendered "My Plans" block plus the matching plans state. Used by the v2 shell to defer the expensive city-grouped travel-plans fetch until after the initial page render. Auth: plans are personal; anonymous callers receive ErrorUnauthorized.
GET /v1/sidebar/get_render Returns server-canonical rendered HTML for the v2 sidebar plus the matching state struct. The client's contract is to replace the inner HTML of the sidebar aside element with Payload.html and update window.ATV2ShellState.sidebar with Payload.state — there is no client-side render, ever. Use this after any mutation that affects the sidebar's structure or data (pinunpin, plans sortgroup toggle, app addedremoved). For pure active-state changes triggered by inline navigation, prefer window.ATV2Sidebar.applyActiveKey() instead — it's a DOM toggle and doesn't need a roundtrip.
GET /v1/sidebar/get_state Returns the current state of the v2 sidebar — the same struct that is embedded in window.ATV2ShellState.sidebar at SSR time. Use this when the client needs to re-derive its in-memory model without re-parsing the rendered HTML. Pass the page's currently-active sidebar key as activeNavKey so the server can mark the right item active in the response. The expanded collapsed submenu set is read server-side from the `atv2_sidebar_expanded` cookie — pass nothing for that.
POST /v1/sidebar/set_expanded Toggle the expandcollapse state of a top-level submenu and persist the choice to the user's `atv2_sidebar_expanded` cookie. Returns the post-mutation {html, state} so the client can swap the rendered nav block. The cookie is the source of truth for SSR re-renders. JS may optimistically toggle [hidden] in the DOM before this call returns; the swap reconciles either way.
POST /v1/sidebar/set_plans_view Persist the user's preferred sort mode for the v2 sidebar's "Your Plans" block (city-grouped appointments). The choice is written to the `atv2_sidebar_plans_view` cookie so subsequent SSR renders pick it up; the response carries the freshly-rendered {html, state} so the client can swap the rendered nav + plans without a follow-up.
GET /v1/notification/get_detail Returns the full non-chat notification payload for a modal or deep link. Chat notifications are intentionally excluded; those belong to the v2 Messageschat dock flow.
GET /v1/notification/get_list Returns the most recent notifications for the authenticated user. The result is a single list sorted newest-first. Each item carries a readState ('Created' | 'Pushed' | 'SentViaEmail' | 'Read') and an isUnread boolean so consumers can render new vs. read in one pass. Pagination: pass offset to fetch older pages. MetaInformation.hasMore is true only when another page exists beyond the returned items. Calling this endpoint does NOT mark any notifications as read — use notificationset_readstate for that.
GET /v1/notification/get_preview Returns a compact, authenticated preview for one notification. Used by the ATV2 realtime preview banner after the WebSocket nudge tells the browser which notification row changed. The socket carries only the notification ID; this endpoint re-reads the row under the acting user so notification and chat text never travels on the unauthenticated WebSocket channel. Calling this endpoint does NOT mark the notification as read.
GET /v1/notification/get_recipients Returns recipientread-state information for one non-chat notification.
POST /v1/notification/set_action Executes a non-chat notification action button owned by the caller. Preferred clients send actionButtonID from get_detailget_list. For older notification actions that never created an action row, send notificationID plus actionButtonName; the server re-reads the row and validates the action before execution.
POST /v1/notification/set_all_read Marks every unread non-chat notification for the authenticated user as read. The native v2 notifications dashboard calls this once on open so the page behaves like an inbox visit rather than only marking the first lazy-loaded page. Chat notifications are intentionally excluded; the v2 chat dock owns chat-read timing so merely opening the notifications dashboard does not clear message unread state.
POST /v1/notification/set_delete Soft-deletes one notification owned by the authenticated user. The notification row remains in ATNotifications for audithistory, but DeletedDate is set so native v2 notification lists and unread counts no longer show it.
POST /v1/notification/set_readstate Changes the visibility of the notifications in the ID list In the portal private listings appear in the private section and public in 'Publicly traded listings'
GET /v1/bookmarks/get_list Returns the authenticated user's active bookmarks, ordered by their chosen sort (drag-reorderable on the v2 Bookmarks page). Empty array for users with no bookmarks; ErrorInvalidUser for anonymous callers.
POST /v1/bookmarks/set_add Add (or refresh) a bookmark for the authenticated user. Idempotent on URL: if the user already has a live bookmark for the supplied url, the existing row is returned (with title description updated to the new values) instead of creating a duplicate. The url must be either http(s) absolute or root-relative ("foobar"). Anything else (javascript:, data:, mailto:, naked schemes) is rejected with ErrorBadParameters so untrusted page code can't smuggle exotic urls into the user's collection. Canonical v2 newsfeed post URLs populate Cache-ATDiscussionPosts_ID so the feed can count how many users bookmarked a post without parsing URLs. A user's first bookmark for a v2 forum post sends the post author a push-only Priority notification tagged back to that discussion post.
POST /v1/bookmarks/set_remove Remove a bookmark owned by the authenticated user. This is a hard delete. Removing a bookmark that doesn't exist or isn't owned by this user returns Error rather than silently succeeding, so client UI can distinguish "deleted" from "wasn't yours to delete".
POST /v1/bookmarks/set_reorder Replace the user's bookmark sort order with the supplied id list. IDs not currently owned by the user (or already deleted) are silently skipped; any owned bookmarks not present in the list keep their relative order, appended after the supplied ones — defensive in case the client view is stale.
GET /v1/trusted_client/get_invite_preview Preview safe Trusted Client invite terms and status for a code. Public-by-design: invite entry needs to show whether a code is usable before checkout; the payload excludes recipient identity and commission terms.
GET /v1/trusted_client/get_invites Return the authenticated user's Trusted Client invite-code management summary.
POST /v1/trusted_client/set_claim_invite_code Claim a Trusted Client invite code for the signed-in user, or return a sign-in preview for a guest. Public-by-design: logged-out code entry must show the same safe terms and sign-in action without mutating the invite.
POST /v1/trusted_client/set_create_invite_code Create an unclaimed Trusted Client invite code. The signed-in person who enters the code claims it and becomes tied to the creator.
POST /v1/trusted_client/set_register_interest Register interest in Trusted Client access for a logged-in user or guest email. Public-by-design: no-code visitors need a lightweight way to express interest without an invite.
POST /v1/trusted_client/set_revoke_invite_code Revoke an unused Trusted Client invite code owned by the authenticated creator.
POST /v1/trusted_client/set_send_administration_invite_code Create an unclaimed administration Trusted Client invite code for an interest row. Requires AccessSpecialFunctions.
GET /v1/seller/get_capabilities Returns the acting seller's current capability limits and readiness.
GET /v1/seller/get_dashboard Returns the seller dashboard overview for the acting user.
GET /v1/seller/get_listing_intelligence Returns listing-level customer view trends and pricing intelligence for listings owned by the acting seller.
GET /v1/seller/get_market_insight_location_report Returns a sellability report for one venue in My Sales Market Insights. The report groups likely sellable inventory by inventory type, date, and timeframe, then adds active public competition already listed for each row.
GET /v1/seller/get_market_insight_locations Returns ranked venues for one seller market insight city. The payload is loaded separately from the main market insights response so large venue strips can hydrate as each market tile comes into view.
GET /v1/seller/get_market_insights Returns forward-looking seller market insights for the selected time window. The payload ranks city markets using same-calendar-window historical transaction demand from prior years, current marketplace demand, upcoming public events, popularity pressure, active supply mix, and the acting seller's coverage.
GET /v1/seller/get_market_notification_rank Returns the acting seller's current notification rank for one location.
GET /v1/seller/get_market_notifications Returns the acting seller's market notification location list grouped by continent and city.
GET /v1/seller/get_onboarding_location_options Searches venues for the seller onboarding in-list selector. Public-by-design: prospective sellers can search venues before signing in.
GET /v1/seller/get_onboarding_profile Returns selected venue stats, related venues, and sponsor matches for seller onboarding. Public-by-design: prospective sellers need to understand their opportunity before signing in.
GET /v1/seller/get_onboarding_teammate_invite_link Builds a personal teammate invite link for a related venue.
GET /v1/seller/get_performance_dashboard Returns seller-private CRM and performance intelligence for the acting user.
GET /v1/seller/get_reward_list Returns active seller rewards.
GET /v1/seller/get_sponsorships Returns sponsorship status for the acting seller.
GET /v1/seller/get_supply_assessment Returns a four-state supply assessment for listing-creation guardrails. Use this before creating new supply to see whether a venue or exact inventory slot has room_for_supply, good_supply, oversupply, or no_estimation. The endpoint is authenticated because supply guidance can include seller-facing market context.
GET /v1/seller/get_traderpoint_event_gaps Returns paginated event-gap cities for the acting seller's matched markets.
GET /v1/seller/get_traderpoint_leadership_opportunities Returns community leadership opportunities for the acting seller's matched markets.
GET /v1/seller/get_traderpoint_overview Returns the lightweight Earn Traderpoints workbench overview for the acting seller. The payload includes account balance, spam-rate status, Market Insights pricing, new-location reward status, and route destinations. Heavy opportunity lists are loaded through dedicated lazy endpoints.
GET /v1/seller/get_work_queue Returns seller drafts, listings, submissions, active held or shortlisted bids, reviews, and transfer tasks.
POST /v1/seller/set_close_sponsorship_request Closes the acting seller's pending sponsor request for the selected medal.
POST /v1/seller/set_onboarding_inlist Saves the acting seller's onboarding in-list.
POST /v1/seller/set_onboarding_sponsor_request Requests a seller onboarding sponsor, replacing the acting user's pending request when needed.
POST /v1/seller/set_onboarding_sponsor_request_cancel Cancels the acting seller's pending onboarding sponsor request.
POST /v1/seller/set_request_sponsor_switch Opens or reopens the acting seller's sponsor-change request chat for an approved sponsorship.
POST /v1/seller/set_sponsorship_note Saves the acting sponsor's public concierges sponsorship message.
GET /v1/portfolio/get_last_order_list_id Returns the order list that has been used last by the api user
GET /v1/portfolio/get_listings Returns all listings in the users portfolio.
GET /v1/portfolio/get_my_appointments_grouped_by_city Returns the authenticated viewer's appointments grouped by city, with separate counts for upcoming (Date >= today) and past (Date < today) rows. Powers the v2 sidebar's "My Plans" block. Each group carries the city's IATA-style group code, display name, and emoji from ATAirport (joined via ATLocation.ATAirport_CityGroupCode, which is a denormalized cache column on ATLocation — no extra join to ATAirport in the count query). Filters applied (always): - CurrentOwner-ATUser_ID = the authenticated viewer (self-only; no peer-user param by design). - DeletedDate IS NULL on ATAppointment and ATLocation. - Status is one of the active My Plans appointment states returned by Appointment::GetMyPlansAppointmentStatuses(). - ATAirport_CityGroupCode populated (rows without a city are dropped silently — they cannot be grouped meaningfully). Sort: groups are returned in the requested order. "upcoming" puts cities with the most upcoming appointments first (ties broken by total count). "name" sorts alphabetically by city display name.
GET /v1/portfolio/get_my_calendar_items Returns every time-bound item belonging to the viewer that falls in the window [from, to], normalized into the CalendarItem shape consumed by modulesv2travel_plans?view=calendar. P1 covers bids and appointments — the two types backed by an existing per-user fetcher. Location events, transactions, livestreams and contract deadlines plug in as additional foreach-blocks once their helpers exist (see CALENDAR_DESIGN.md §5).
GET /v1/portfolio/get_my_travel_plan_archived Archived travel plans for the v2 "My Plans" archive view. Returns a newest-first list of the viewer's archived appointments, each carrying the city payload used by the normal My Plans landing page.
GET /v1/portfolio/get_my_travel_plan_detail Per-city travel plan detail — the v2 city detail page's data source. Returns the city's display data plus the viewer's appointments and active bids in that city, filtered to the requested time window (upcoming = on-or-after today, past = before today, archived = archived plans). Both lists are returned in the row shape that templatesportfolio _card_appointment.html and _card_active_bid.html expect, so the v2 page can call those partials directly with no field translation. Scale: per-user row counts are small. Both legacy library calls (`Bids::GetBidsByUserID`, `Appointment::GetAppointmentsByUserID`) scan only the user's rows; the per-city + per-window filter runs in PHP. Hard-capped at 200 rows per source.
GET /v1/portfolio/get_my_travel_plan_upcoming All-upcoming travel plans — the v2 "My Plans" landing page data. Returns a flat chronological list of the viewer's upcoming items (confirmed appointments + selling listings + active bids + seller-sold upcoming sales) within the next $days, each carrying the city it belongs to so the SSR view can group-render by city. Per-user bounded; hard-capped at 200 items per source.
GET /v1/portfolio/get_my_travel_plans Travel plans by city — the v2 sidebar's "My Plans" data source. Returns one group per city the viewer has activity in, where activity is the union of: - My Plans appointments owned by or shared with the viewer (ATAppointment.Status IN ('Approved','Private','Unlocked','In Transfer')). - Active bids placed by the viewer (ATTransaction.Status='PENDING' with a non-null ATBids_ID). - Upcoming reservations the viewer sold, sourced from completed ATTransaction rows where the viewer was the cached seller. Each group's `upcomingCount` `pastCount` are the sum of appointment and bid counts; the per-source breakdown is also returned so the UI can render "2 trips · 3 bids" without another call. Scale: at hundreds of thousands of bidsappointments globally, both subqueries must seek by user-leading indexes: - ATAppointment(`CurrentOwner-ATUser_ID`) — singleton index. - ATTransaction(`Cache-Buyer-ATUser_ID`) — singleton index. The bid count runs against ATTransaction alone (no ATBidsATLocation join) by reading the denormalized `Cache-ATAirport_CityGroupCode` column. Per-user row counts are small, so the post-seek filter and GROUP BY are cheap.
GET /v1/portfolio/get_order_list_items Returns the order list items for $orderListID
GET /v1/portfolio/get_order_lists Returns all available orderlists
GET /v1/portfolio/get_valid_location_identifiers Searches available location identifiers for purposes of creating a buy order
POST /v1/portfolio/mint_calendar_feed_token Returns the viewer's iCalendar subscription URL, minting a token on first call. Idempotent — subsequent calls return the same URL until the user explicitly revokes via set_revoke_calendar_feed_tokens. The URL is intentionally returned as plain HTTPS; clients flip the scheme to webcal: when they want to trigger a system "Subscribe?" prompt (iOS Safari, macOS Mail). See CALENDAR_DESIGN.md §6.
POST /v1/portfolio/set_archive_my_travel_plan Archives an owned reservation from v2 My Plans. Archived plans are hidden from the upcomingpast city tabs and collected under the Archived Plans view.
POST /v1/portfolio/set_bulk_bid_order Create a Bulk Buy Order IN BETA - NOT YET FUNCTIONAL The algorithm will place bids automatically pricing will be decided on a bid-per-bid basis but will never exceed or subsceed the minium bid price.
POST /v1/portfolio/set_delete_order_list Delete order list
POST /v1/portfolio/set_delete_order_list_item Deletes an order list item
POST /v1/portfolio/set_my_travel_plan_share_details Updates or removes a community share for an owned My Plans appointment.
POST /v1/portfolio/set_order_list Create a new order list
POST /v1/portfolio/set_order_list_item Saves an order list item
POST /v1/portfolio/set_rename_order_list Rename order list
POST /v1/portfolio/set_revoke_calendar_feed_tokens Revokes every active calendar-feed token for the viewer. Use this when the user clicks "Regenerate URL" in the Sync sheet — call mint after to issue a fresh one.
POST /v1/portfolio/set_suggest_list_to_user Returns the order list that has been used last by the user
POST /v1/portfolio/set_unarchive_my_travel_plan Restores an owned archived reservation from v2 My Plans. The plan returns to its most recent non-archived status when that status is still supported by My Plans; otherwise it falls back to Private.
POST /v1/portfolio/set_unlock_private_appointment Unlocks a private reservation for personal use from v2 My Plans. Unlocking reveals the exact start time and confirmation details. After a reservation is unlocked, resale must go through the regular offer and review process again.
POST /v1/portfolio/set_update_order_list_item_quantity Updates the quantity of an item
GET /v1/bid/get_list Returns all available bids with a reporting delay of 5 minutes.
GET /v1/bid/get_pickup_requirements Returns the seller pickup state and confirmation data for one bid.
POST /v1/bid/set Places a bid Please note that users are required to hold the API Developer medal to access automated buying. A minimum balance of $50 per automatically purchased listings that have not passed by at least 72 hours is required to cover for no-show refunds. Example: If 100 listings for the next 30 days have been purchased the users main account must reflect an available balance (which can be a combination of credit limit and balance) of at least $5,000 to cover for no show refunds. use /v1/account/set_add_funds to programatically fund your account
POST /v1/bid/set_cancel Cancels an active bid
POST /v1/bid/set_drop Release a bid currently held by the acting seller.
POST /v1/bid/set_feedback Send seller feedback for a bid, such as no connection or bid too low.
POST /v1/bid/set_move_ownership Give a Bid to Another User This function lets an eligible sponsor pass a held bid to one of their approved Concierge medal teammates. If your contact is not on AT yet:
POST /v1/bid/set_note Save the acting seller's private note for a bid.
POST /v1/bid/set_pickup Pick up and hold a bid for the acting seller.
POST /v1/bid/set_reservation_contact Saves the bidder-specified reservation contact details for an active bid.
POST /v1/bid/set_shortlist Shortlist or un-shortlist a bid for the acting seller.
GET /v1/reservation/get_detail Returns a native v2 reservation payload for the acting viewer. Public-by-design: anonymous share links reveal teaser metadata only; exact reservation details require sign-in.
POST /v1/reservation/set_accept_sharecode Accepts a share code for the acting signed-in user.
POST /v1/reservation/set_approve_review Approves a native reservation review for the acting reviewer.
POST /v1/reservation/set_begin_review Begins native reservation review for the acting reviewer.
POST /v1/reservation/set_cancel_transfer_service Cancels transfer service for the acting buyer's reservation, including transfer work already in progress.
POST /v1/reservation/set_reject_review Rejects a native reservation review for the acting reviewer.
POST /v1/reservation/set_request_transfer_service Requests transfer service for the acting buyer's reservation.
GET /v1/auth/get_sessions Return the authenticated user's active sessions, with the current browser session marked for display on the native v2 Session Manager.
POST /v1/auth/set_all_sessions_removed Remove every active session owned by the authenticated user, including the current browser session. The browser cookie is expired and the response includes signedOut=true.
POST /v1/auth/set_other_sessions_removed Remove every active session except the current browser session. The viewer remains signed in on this device and receives a refreshed list.
POST /v1/auth/set_session_removed Remove one active session owned by the authenticated user. If that session is the current browser session, the browser cookie is expired and the response includes signedOut=true.
GET /v1/listing/get_competing_listings Lists competing listings in a certain timeframe, along with pricing information
GET /v1/listing/get_portfolio_listings Legacy alias for /v1/portfolio/get_listings
POST /v1/listing/set_archive Archive Listing
POST /v1/listing/set_begin_transfer Start working on a transfer-service listing.
POST /v1/listing/set_cancel_bid Cancels a bid
POST /v1/listing/set_cancel_transfer_service Cancel transfer service for a seller-owned listing.
POST /v1/listing/set_complete_transfer Mark a transfer-service listing as successfully transferred.
POST /v1/listing/set_create_from_template Creates an appointment from a template, only appointments owned by api user may be copied.
POST /v1/listing/set_delete_review Take a listing out of review and delete it.
POST /v1/listing/set_fail_transfer Mark a transfer-service listing as failed.
POST /v1/listing/set_fill_bid Fills a bid with a portfolio bid answer that is either off market or publicly available to fill a bid with a new bid answer please use /v1/location/set_listing
POST /v1/listing/set_market_visibility Changes the visibility in the market. In the portal private listings appear in the private section and public in 'Publicly traded listings'
POST /v1/listing/set_price Changes the current listing price
POST /v1/listing/set_purchase Purchase a listing
POST /v1/listing/set_unarchive Restore an archived listing to its previous market visibility.
POST /v1/listing/set_update Updates an off-market seller listing using the same structured listing fields as the v2 listing composer.
GET /v1/floorplan/get_by_id Returns one floorplan by ID with all floors, layouts, and areas hydrated. Used by the editor JS to refresh state after a write. Public-by-design: the floorplan tree itself isn't sensitive (the editor surface gates its own write actions via permissions).
GET /v1/floorplan/get_floor Single-floor detail (architecture SVG + the floor's Active layout with all areas). Used by the editor when switching between floors. Public-by-design: same rationale as `get_for_location`.
GET /v1/floorplan/get_for_event Returns Active floorplans linked to an `ATLocationEvents` row via `ATFloorplans.ATLocationEvent_ID`. Public-by-design: floorplans are reused across modules and apps; no sensitive content lives on this surface.
GET /v1/floorplan/get_for_location Returns the Active floorplans linked to an `ATLocation` via the direct `ATFloorplans.ATLocation_ID` column, with all floors, the currently- Active layout per floor, and every area on that layout. Returns an empty list (still wrapped in Success) when no Active floorplan covers the venue. Multiple floorplans may cover the same venue (different creators, different perspectives). Consuming surfaces typically render the first Active result; finer attribution comes via the area-level tag `ATLocation.ATFloorplanArea_ID`. Public-by-design: floorplans are reused across modules and apps; no sensitive content lives on this surface.
GET /v1/floorplan/get_license_for_app License lookup for a (floorplan, app) pair. Resolution order: 1. Per-app override row in `ATFloorplanLicenses` (Status='Active'). 2. Wildcard row (`ATApps_ID IS NULL`, Status='Active'). 3. Fall through to the `Permission::FloorplanAreaTradeRoyaltyPct` default for the floorplan originator. Public-by-design: app renderers can inspect published floorplan terms.
GET /v1/floorplan/get_link_candidates Creator-only link picker for floorplan creation. Returns normalized `ATV2SearchSelect` options for venues, events, or both. `results` is returned as a compatibility alias for older `ATV2Search` callers.
GET /v1/floorplan/get_pending_review_list Moderation queue: floorplans waiting for review. Gated by `Permission::CanReviewFloorplanSubmissions`.
POST /v1/floorplan/set_approved Approve a Submitted floorplan, promoting it to Active. Floorplans are not exclusive per venueevent -- multiple Active floorplans may share the same direct link -- so no supersede pass runs at this layer; the moderator can manually mark an older floorplan as Superseded if a true replacement is intended. Gated by `Permission::CanReviewFloorplanSubmissions`.
POST /v1/floorplan/set_areas Replace every area on a layout with the supplied list. The whole-list replace is intentional: the editor sends its current state, the server is the single source of truth on disk. Existing areas are soft-deleted (`DeletedDate=NOW()`) and the supplied rows are inserted fresh; this preserves historical attribution because the old area IDs aren't reused, but tagged ATLocationATLocationEvent rows pointing at deleted areas will need re-tagging by the operator.
POST /v1/floorplan/set_event_area Tag an `ATLocationEvent` with a floorplan area. Same gate as `set_location_area`.
POST /v1/floorplan/set_floor Upsert a floor (architecture SVG, viewbox, name, order). Pass ATFloorplanFloor_ID = 0 to create a new floor under the supplied floorplan; non-zero updates the existing row. Architecture SVG is sanitised before write so user-pasted blobs can't smuggle scripts.
POST /v1/floorplan/set_imported_svg Import a pasteduploaded SVG fragment as the architecture layer of a floor. The fragment is sanitised server-side: script elements, event handlers (onload, onclick, ...), foreignObject elements, external references, and unsafe URL schemes are stripped before write. Optional autoExtractAreas mode walks the cleaned tree for rect, polygon, circle, and path elements that carry either a title child or a data-atv2-label attribute, and inserts each into the floor's currently-Active layout as a draft area, ready for the creator to assign categories to.
POST /v1/floorplan/set_layout Upsert a layout. Pass `ATFloorplanLayout_ID = 0` to create a new layout under the supplied floor; non-zero updates the existing row. When the resulting status is `Active`, ANY other Active layout on the same floor flips to `Historical` in the same write -- there can be exactly one Active layout per floor at a time.
POST /v1/floorplan/set_location_area Tag an `ATLocation` with a floorplan area so trades against that venue inherit area attribution for royalty purposes. Gated either by floorplan ownership OR `Permission::LocationAdministration`.
POST /v1/floorplan/set_new Direct creation entry point. Transactionally creates an ATFloorplans row (Draft), plus an initial ATFloorplanFloor ("Ground") and an initial ATFloorplanLayout ("Default", Active) so the editor has somewhere to draw immediately. Gated by `Permission::CanCreateFloorplan`. At least one of `ATLocation_ID` or `ATLocationEvent_ID` is required. Both may be supplied.
POST /v1/floorplan/set_rejected Reject a Submitted floorplan with a reviewer note. Gated by `Permission::CanReviewFloorplanSubmissions`.
POST /v1/floorplan/set_submitted_for_review Move a Draft floorplan into the moderation queue. Owner-only.
GET /v1/appsv2/get_about_post_candidates Finds public community posts that can be selected as an app's About my app post. Eligibility mirrors the profileAbout Me selector.
GET /v1/appsv2/get_checkout_url Returns an inline custom-article checkout URL for paid app access.
GET /v1/appsv2/get_list Returns the list of published user-created apps for the appstore. Public-by-design: the appstore is a public browse surface; paid apps only expose storefront metadata here, while app access is enforced by modulesv2_app_host and \AT\ATAppsV2::ViewerCanAccess().
GET /v1/appsv2/get_my_apps Returns apps owned by the current viewer for the App Store setup UI.
POST /v1/appsv2/set_about_post Sets or clears an app's About my app post.
POST /v1/appsv2/set_create Create a new user-published app row in the v2 appstore.
POST /v1/appsv2/set_update Update a user-owned v2 app's storefront setup.
GET /v1/medal/get_achievement_bonus_types Searches all available requirements
GET /v1/medal/get_administration_medal_map Returns the administration medal builder map.
GET /v1/medal/get_administration_medal_sprite_ai_suggestion Requests an AI-generated sprite wizard suggestion without writing it.
GET /v1/medal/get_administration_medal_tier_details Returns requirement and achievement bonus editor data for one medal tier.
GET /v1/medal/get_available_medal_categories Searches all available medal categories on the platform
GET /v1/medal/get_available_medals Searches all available medals on the platform
GET /v1/medal/get_available_permissions Searches all available requirements
GET /v1/medal/get_available_requirements Searches all available requirements
POST /v1/medal/set_achievement_bonus Create a bonus for the Medal The bonus defined below will be granted to people who achieve the Medal for the first time.
POST /v1/medal/set_administration_medal_category Saves category-level medal metadata and wizard defaults.
POST /v1/medal/set_administration_medal_category_create Creates a top-level administration medal category.
POST /v1/medal/set_administration_medal_path Saves a medal category path from an ordered low-to-high tier list.
POST /v1/medal/set_administration_medal_sprite_apply Applies a sprite wizard config by writing deterministic SVG files and medal metadata.
POST /v1/medal/set_administration_medal_submedal Saves one submedal's visible metadata and optional sprite override.
POST /v1/medal/set_administration_medal_submedal_create Creates a horizontal submedal under an exact parent medal tier.
POST /v1/medal/set_administration_medal_tier Saves one medal tier's visible metadata and optional sprite override.
POST /v1/medal/set_administration_medal_tier_achievement_bonus Adds or updates one achievement bonus on a medal tier.
POST /v1/medal/set_administration_medal_tier_achievement_bonus_delete Removes one achievement bonus from a medal tier.
POST /v1/medal/set_administration_medal_tier_create Creates a medal tier inside a top-level medal category.
POST /v1/medal/set_administration_medal_tier_requirement Adds or updates one auto-grant requirement link on a medal tier.
POST /v1/medal/set_administration_medal_tier_requirement_delete Removes one auto-grant requirement link from a medal tier.
POST /v1/medal/set_create_medal Create A New Medal
POST /v1/medal/set_delete_achievement_bonus Delete the Achievement Bonus
POST /v1/medal/set_edit_medal Edit Medal
POST /v1/medal/set_grant_user_medal Manually grants a medal tier to a user. This is an administrator override: requirements are bypassed, the grant is marked with the acting admin and comment, and automatic ungrant is disabled.
POST /v1/medal/set_link_permission Link a permission to the Medal
POST /v1/medal/set_link_requirement Link a requirement to the Medal
POST /v1/medal/set_permission_payload Sets a direct permission payload for a usergroup.
POST /v1/medal/set_request_medal_sponsorship Request Medal Sponsorship
POST /v1/medal/set_sponsor_user Sponsor A Medal for will be recommended for the medal you define below.
POST /v1/medal/set_unlink_permission Delete the Medal Permission link
POST /v1/medal/set_unlink_requirement Delete the Medal Requirement link
POST /v1/aichat/get Gets messages for a user thread
GET /v1/aichat/get_status Gets messages for a user thread
POST /v1/aichat/set Sends a message to an AI chat
POST /v1/aichat/set_clear Clear chat history
GET /v1/account/get_corporate_account_list Returns platform corporate accounts for Administration inspection tools. This endpoint is admin-only and intentionally ignores impersonation for account ownership: the list contains corporate AppointmentTrader ledger accounts that can be selected as the platform counterparty.
GET /v1/account/get_corporate_transaction_summary Returns corporate account transaction totals for a date range, optionally with matching ledger rows. Admin tools inspect another user's transactions through the dispatcher impersonationUserAlias parameter. The selected corporate account is a platform account; the effective API user is used as the counterparty filter.
GET /v1/account/get_incoming_payment_session Returns details of the incoming payment session and information on whether it has been completed or is still pending.
GET /v1/account/get_ledger Returns paginated ledger entries for one account owned by the acting API user. Admin tools should access another user's ledger through the dispatcher impersonationUserAlias parameter; this endpoint still validates the account against the effective API user.
GET /v1/account/get_list Returns all available user accounts including their balances and if applicable credit limits in the smallest possible currency unit
POST /v1/account/set_start_incoming_payment_session Creates an incoming payments session which will be credited to API users main account.
GET /v1/external_services/get_status Returns the external-service registry with live health-check results.

/v1/tools/

Provides helpful functions to compliment appointment trades

GET

/v1/tools/get_convert_currency

#
Converts a currency amount
Attention: DO NOT USE for moneteray transactions, values are approximate!

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
currencyAmountInSmallestPossibleUnit int Gerekli CurrencyAmount in smallest possible unit (for instance 25 EUR would be 2500)
sourceCurrencyCode string Gerekli
destinationCurrencyCode string Gerekli
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/tools/get_convert_currency' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'currencyAmountInSmallestPossibleUnit=2500' \
  --data-urlencode 'sourceCurrencyCode=EUR' \
  --data-urlencode 'destinationCurrencyCode=USD'

Dönüşler

int

Converted sourceCurrencyCode amount in destinationCurrencyCode
GET

/v1/tools/get_geoip_data

#
Returns geolocation data from an ipaddress

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
IPv4Address string Gerekli 32 bit IP v4 Address to locate
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/tools/get_geoip_data' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'IPv4Address=216.73.216.111'

Dönüşler

NestedKeyValueList

Depending on data availability, MetaInformation about the IP addresses origin such as latitude, longitude, city, region, country & zip will be returned
POST

/v1/tools/set_mouseflow_recording

#
Enable or disable Mouseflow recording for the current user or for everybody. Requires AccessSpecialFunctions.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
enabled bool Gerekli true to enable Mouseflow recording; false to disable it.
isWritingRequest bool İsteğe Bağlı false Set true to actually change the recording flag.
scope string İsteğe Bağlı user Recording scope: user for the current logged-in user, everyone for all visitors.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/tools/set_mouseflow_recording' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'enabled=true' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}' \
  --data-urlencode 'scope=user'

Dönüşler

NestedKeyValueList

Mouseflow recording state for the current request.

/v1/community/

Manages Community Related Functions

GET

/v1/community/get_administration_board_options

#
Searches live discussion boards for the v2 Administration live-board editor.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
q string İsteğe Bağlı (empty string) Board ID, name, slug, or description search text.
pageSize int İsteğe Bağlı 12 Maximum number of options to return.
status string İsteğe Bağlı live Board status to search, either live or deleted.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_administration_board_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'q=api' \
  --data-urlencode 'pageSize=12' \
  --data-urlencode 'status=live'

Dönüşler

NestedKeyValueList

{ options: [{value, label, subtitle, boardID, name, slug, type, isDeleted, url}] }
GET

/v1/community/get_board_about_post_candidates

#
Finds board-local top-level posts that can be selected as the board profile About post.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
boardId int İsteğe Bağlı 0 ATDiscussionBoards.ID.
forumAlias string İsteğe Bağlı (empty string) Optional v2 forum alias fallback.
searchFilter string İsteğe Bağlı (empty string) Search text for board posts by title, body, or author alias.
postID int İsteğe Bağlı 0 Exact ATDiscussionPosts.ID to preview.
pageSize int İsteğe Bağlı 8 Maximum candidates to return.
minimumImageMediaCount int İsteğe Bağlı 2 Minimum attached image-media items required.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_board_about_post_candidates' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'boardId=123' \
  --data-urlencode 'forumAlias=discussion-123' \
  --data-urlencode 'searchFilter=introducing' \
  --data-urlencode 'postID=1436696' \
  --data-urlencode 'pageSize=8' \
  --data-urlencode 'minimumImageMediaCount=2'

Dönüşler

NestedKeyValueList

{ Candidates: [{ id, title, bodyPreview, url, author, board, imageMediaCount, media }], Page: { pageSize } }
GET

/v1/community/get_chat_actions

#
Returns every currently executable action button registered for a chat.

Action buttons originate in message DatabaseTags and are projected into
ATNotificationIntelligentTagsActionButtons when the notification rows are
created. This endpoint reads that projection so clients do not have to
scan the entire message history to discover older actions.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID of the chat.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_chat_actions' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}'

Dönüşler

NestedKeyValueList

{ ChatID, Actions: [{ActionButtonID, NotificationID, NotificationBodyID, ActionButtonName, Name, AdditionalText, ConfirmTitle, ConfirmText, ConfirmButtonText, CustomAction, CustomActionParameter, DatabaseTags, Clickable}] }
GET

/v1/community/get_chat_add_participant_options

#
Returns user alias options that the acting user may add to a chat. Chat hosts only see users who accepted a 1:1 chat with the host. Global community administrators can search all non-deleted users. The write endpoint repeats these checks; this endpoint is only for autocomplete UX.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID of the chat.
searchFilter string İsteğe Bağlı (empty string) Optional alias filter.
limit int İsteğe Bağlı 10 Maximum options to return, capped at 50.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_chat_add_participant_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'searchFilter=fluffy' \
  --data-urlencode 'limit=10'

Dönüşler

NestedKeyValueList

{ ChatID, CanAddParticipants, Mode, HostUserID, Options: [{UserID, Alias, Avatar, AccountStatus, LastLoginDate, ProfileURL}] }
GET

/v1/community/get_chat_messages

#
Returns the most recent messages for a chat the calling user has access to.

Used by the v2 chat dock to populate a chat window on open and to refresh
via a 360s offline-recovery poll that runs in parallel with the future
websocket. Messages are returned oldest-first so the client can append
without reordering. Chat delivery is keyed by ATNotificationsBody.ID so
repeated identical message text is still returned as distinct messages.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID of the chat.
limit int İsteğe Bağlı 50 Maximum number of messages to return (capped at 200).
offset int İsteğe Bağlı 0 Pagination offset (0 = newest page).
afterNotificationBodyID int İsteğe Bağlı 0 If set, returns messages newer than this ATNotificationsBody.ID.
beforeNotificationBodyID int İsteğe Bağlı 0 If set, returns messages older than this ATNotificationsBody.ID.
includeChatActions bool İsteğe Bağlı false If true, also returns every currently executable action for the chat.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_chat_messages' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'limit=50' \
  --data-urlencode 'offset={{offset}}' \
  --data-urlencode 'afterNotificationBodyID={{afterNotificationBodyID}}' \
  --data-urlencode 'beforeNotificationBodyID={{beforeNotificationBodyID}}' \
  --data-urlencode 'includeChatActions=false'

Dönüşler

NestedKeyValueList

{ ChatID, Name, nameTranslation, IsHost, IsMuted, MutedDate, HasMore, OldestNotificationBodyID, NewestNotificationBodyID, Participants: [{UserID, Alias, Avatar}], Actions, UserToUser, HireDirect, HireDirectRequest, Messages: [{NotificationBodyID, CreatedDate, CreatedDateDisplay, SenderID, SenderAlias, SenderAvatar, SenderDisplay, SenderDisplayHTML, Subject, Body, DestinationPage, Media: [{id, thumbUrl, mediaUrl, mediaType, width, height, title}], RichLinks: [{id, url, canonicalUrl, title, description, siteName, image}], ActionButtons, Delivery: {NotificationID, RecipientCount, Recipients: [{NotificationID, UserID, Username, State, CreatedDate, CreatedDateDisplay, LastUpdateDate, LastUpdateDateDisplay, PushSendTime, PushSendTimeDisplay, PushReceiveTime, PushReceiveTimeDisplay, PushOpenTime, PushOpenTimeDisplay, EmailSendTime, EmailSendTimeDisplay, EmailOpenTime, EmailOpenTimeDisplay, ReadTime, ReadTimeDisplay}]}, Reactions, ChatEvent, ReplyContext: { NotificationBodyID, SenderID, SenderAlias, Preview, HasMedia }, translation: { senderLocaleCode, senderLanguageCode, receiverLanguageCode, ... }}] }
GET

/v1/community/get_chat_summary

#
Returns an overview of a chat, including participant and media totals.

Used by the v2 chat dock summary modal. This endpoint reads the full chat
history metadata so the summary is not limited to whichever message page
the dock has currently loaded.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID of the chat.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_chat_summary' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}'

Dönüşler

NestedKeyValueList

{ ChatID, Name, Status, IsMuted, MutedDate, MessageCount, MediaCount, Participants: [{UserID, Alias, Avatar, Display}], ParticipantCount, UserToUser, Media: [{id, thumbUrl, mediaUrl, mediaType, width, height, title, messageNotificationBodyID, createdDate, createdDateDisplay}] }
GET

/v1/community/get_chats

#
Returns the chats and chat groups visible to the requesting user.
Mirrors what moduleschatindex.php renders so callers can build their own chat overview.

Each chat row includes the last message preview, ACTIVEARCHIVED flag, group ID,
and the participants on the chat (with their display alias and emoji avatar).

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
status string İsteğe Bağlı ACTIVE ACTIVE returns currently open chats; ARCHIVED returns chats the user has archived.
groupID int İsteğe Bağlı 0 Optional chat-group filter. Pass 0 (default) for all groups; pass an ID returned in Payload.Groups[].ID to filter.
limit int İsteğe Bağlı 50 How many chats to return (max 200).
offset int İsteğe Bağlı 0 Pagination offset, in rows.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_chats' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'status=ACTIVE' \
  --data-urlencode 'groupID={{groupID}}' \
  --data-urlencode 'limit=50' \
  --data-urlencode 'offset={{offset}}'

Dönüşler

NestedKeyValueList

{ Groups: [...], Chats: [{ ID, Name, Description, Status, IsPinned, SortOrder, IsMuted, MutedDate, LastMessageDate, LastMessageDateDisplay, MinimizedUnreadDismissedThroughNotificationBodyID, LastMessage: { NotificationBodyID, Preview, CreatedDate, CreatedDateDisplay, ReadState, SenderID, SenderAlias, IsFromViewer, HasMedia, Delivery: {NotificationID, RecipientCount, Recipients: [...]}, translation: { senderLocaleCode, senderLanguageCode, receiverLanguageCode, ... } }, translation, Participants, UserToUser, HireDirect, HireDirectRequest }], Page: { Status, GroupID, Limit, Offset, NextOffset, HasMore }, Counts: { Active, ArchivedUnread }, Support: { ExistingChatID, ExistingChatName, ExistingChatUrl, CanCreate, IsAccountVerified } }
GET

/v1/community/get_forum_feed

#
Returns one page of posts attached to a single community forum board.

Public-by-design: public forum feeds are readable by anonymous viewers;
restricted boards are still gated by Community::HasAccess.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
forumAlias string İsteğe Bağlı (empty string) The v2 forum URL alias, usually URLSlug-ID.
boardId int İsteğe Bağlı 0 Optional ATDiscussionBoards.ID fallback.
cursor string İsteğe Bağlı (empty string) Opaque pagination cursor from the previous response. Pass empty string for the first page.
limit int İsteğe Bağlı 20 Page size (1-50).
sort string İsteğe Bağlı latest Sort mode: latest or activity.
sinceId int İsteğe Bağlı 0 Only return posts strictly newer than this post ID. Pass 0 for normal pagination.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_forum_feed' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'forumAlias=discussion-123' \
  --data-urlencode 'boardId=123' \
  --data-urlencode 'cursor={{cursor}}' \
  --data-urlencode 'limit=20' \
  --data-urlencode 'sort=latest' \
  --data-urlencode 'sinceId={{sinceId}}'

Dönüşler

NestedKeyValueList

{ posts: [...], discoveryBlocks: [], nextCursor, hasMore, view }
GET

/v1/community/get_forum_profile

#
Returns public profile metadata for a community forum board.

Public-by-design: forum profile metadata is readable by anonymous viewers.
Restricted boards return safe access-preview metadata only; feeds stay gated.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
forumAlias string İsteğe Bağlı (empty string) The v2 forum URL alias, usually URLSlug-ID.
boardId int İsteğe Bağlı 0 Optional ATDiscussionBoards.ID fallback.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_forum_profile' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'forumAlias=discussion-123' \
  --data-urlencode 'boardId=123'

Dönüşler

NestedKeyValueList

{ forum: {...}, copy: {...}, viewer: {...}, accessPreview: {...}, memberProof: {...} }
GET

/v1/community/get_location_about_post_candidates

#
Finds top-level public community posts connected to a location that can be selected as the location profile About post.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int İsteğe Bağlı 0 ATLocation.ID.
locationAlias string İsteğe Bağlı (empty string) Optional public location alias fallback.
searchFilter string İsteğe Bağlı (empty string) Search text for location posts by title, body, or author alias.
postID int İsteğe Bağlı 0 Exact ATDiscussionPosts.ID to preview.
pageSize int İsteğe Bağlı 8 Maximum candidates to return.
minimumImageMediaCount int İsteğe Bağlı 2 Minimum attached image-media items required.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_location_about_post_candidates' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=123' \
  --data-urlencode 'locationAlias=carbone-new-york' \
  --data-urlencode 'searchFilter=introducing' \
  --data-urlencode 'postID=1436696' \
  --data-urlencode 'pageSize=8' \
  --data-urlencode 'minimumImageMediaCount=2'

Dönüşler

NestedKeyValueList

{ Candidates: [{ id, title, bodyPreview, url, author, board, imageMediaCount, media }], Page: { pageSize, locationID, schemaReady } }
GET

/v1/community/get_location_feed

#
Returns one page of public community posts attached to a location profile. Public-by-design: public location profile feeds are readable by anonymous viewers; restricted boards are still filtered by Community::GetPostsByBoardID.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli The public ATLocation alias.
cursor string İsteğe Bağlı (empty string) Opaque pagination cursor from the previous response. Pass empty string for the first page.
limit int İsteğe Bağlı 20 Page size (1-50).
sort string İsteğe Bağlı latest Sort mode: latest or activity.
sinceId int İsteğe Bağlı 0 Only return posts strictly newer than this post ID. Pass 0 for normal pagination.
includeRelatedLocations bool İsteğe Bağlı true Include first-page related-location discovery insert.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_location_feed' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=carbone-new-york' \
  --data-urlencode 'cursor={{cursor}}' \
  --data-urlencode 'limit=20' \
  --data-urlencode 'sort=latest' \
  --data-urlencode 'sinceId={{sinceId}}' \
  --data-urlencode 'includeRelatedLocations=true'

Dönüşler

NestedKeyValueList

{ posts: [...], discoveryBlocks: [...], nextCursor, hasMore, view }
GET

/v1/community/get_newsfeed

#
Returns one page of newsfeed posts as structured JSON.

The cursor is opaque — pass back the value returned in the previous
response's `nextCursor` field. Anonymous callers can read public feeds;
signed-in filters are rejected unless they request `view=profile`.

Public-by-design: public communityprofile posts are readable by anonymous
viewers; restricted boards are still filtered by Community::GetPostsByBoardID.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
view string İsteğe Bağlı for_you Legacy feed source. profile remains special; alltrending map to feed=for_you.
cursor string İsteğe Bağlı (empty string) Opaque pagination cursor from the previous response. Pass empty string for the first page.
limit int İsteğe Bağlı 11 Page size (1–50).
sinceId int İsteğe Bağlı 0 Only return posts strictly newer than this post ID. Pass 0 for normal pagination. Used by the "new posts available" poll.
discoveryExcludeCities string İsteğe Bağlı (empty string) Comma-separated city slugs already shown in the current client-side discovery session.
profileUserAlias string İsteğe Bağlı (empty string) Public profile alias whose authored top-level posts should be loaded when view=profile.
freshness string İsteğe Bağlı all Legacy freshness filter: all or new. new maps to filter=new.
feed string İsteğe Bağlı (empty string) Canonical feed: for_you, offers, or requests.
filter string İsteğe Bağlı (empty string) Comma-separated filter tokens such as my_posts,my_mentions,new.
includeDiscovery bool İsteğe Bağlı true Include optional marketplace discovery blocks in the response.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_newsfeed' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'view=for_you' \
  --data-urlencode 'cursor={{cursor}}' \
  --data-urlencode 'limit=11' \
  --data-urlencode 'sinceId={{sinceId}}' \
  --data-urlencode 'discoveryExcludeCities=los-angeles,new-york' \
  --data-urlencode 'profileUserAlias=ColorfulRod45' \
  --data-urlencode 'freshness=all' \
  --data-urlencode 'feed=requests' \
  --data-urlencode 'filter=my_posts,new' \
  --data-urlencode 'includeDiscovery=true'

Dönüşler

NestedKeyValueList

{ posts: [...], discoveryBlocks: [...], nextCursor, hasMore, view, feed, filter, activeFilters, feedTabs, filters }
GET

/v1/community/get_newsfeed_comment

#
Returns one authorized serialized newsfeed comment after a live comment nudge.

Public-by-design: public community boards are readable by anonymous viewers; restricted boards are still gated except for comments in the selected board About thread.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 Top-level ATDiscussionPosts.ID for the thread.
commentId int İsteğe Bağlı 0 ATDiscussionPosts.ID for the new comment.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_newsfeed_comment' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=1436696' \
  --data-urlencode 'commentId=1436697'

Dönüşler

NestedKeyValueList

{ postId, parentPostId, comment }
GET

/v1/community/get_newsfeed_post

#
Returns one full newsfeed post with its direct comments and subcomments expanded.

Public-by-design: public community boards are readable by anonymous viewers; restricted boards are still gated by Community::HasAccess except for the selected board About thread.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID to open.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_newsfeed_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=1436696'

Dönüşler

NestedKeyValueList

{ post: {...}, comments: [{..., children: [...]}] }
GET

/v1/community/get_newsfeed_replies

#
Returns the first N replies for a post (direct children only, oldest-first).

Used by the inline-replies expansion. The reply tree for nested
comments-of-comments is loaded lazily by calling this endpoint again
with the child reply ID as `postId`.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int Gerekli Post whose direct replies to fetch.
cursor string İsteğe Bağlı (empty string) Opaque pagination cursor from the previous response.
limit int İsteğe Bağlı 5 Max replies (1–50).
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_newsfeed_replies' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588' \
  --data-urlencode 'cursor={{cursor}}' \
  --data-urlencode 'limit=5'

Dönüşler

NestedKeyValueList

{ replies: [...], nextCursor, hasMore }
GET

/v1/community/get_newsfeed_reply_example

#
Returns short AI-generated example replies for the v2 post detail reply composer. The examples are display-only typewriter prompts. They are never submitted automatically and are cached by post content, viewer role, and active locale.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID to generate reply examples for.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_newsfeed_reply_example' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=1436696'

Dönüşler

NestedKeyValueList

{ examples: [...], viewerRole, cached }
GET

/v1/community/get_post_action_permissions

#
Returns call-time action permissions for one newsfeed post. This intentionally checks only the selected post, not every feed card
during get_newsfeed serialization.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID whose action menu was opened.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_post_action_permissions' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588'

Dönüşler

NestedKeyValueList

{ postId, canDelete, canSetPublicReleaseDate, canCreatePoll, canMoveForum, canGoLive, canAddEventLocation, goLiveUrl, eventLocationBridge, publicRelease, forumMove }
GET

/v1/community/get_post_actions

#
Returns visible action buttons for one community post.

Public-by-design: this returns only action metadata for a post the
viewer can already read; action classes own their own visibility and may
omit themselves for anonymous viewers.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID whose action buttons should be refreshed.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_post_actions' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588'

Dönüşler

NestedKeyValueList

{ PostID, postActions: { prominent: [], menu: [] } }
GET

/v1/community/get_post_forum_move_options

#
Returns same-intent forum choices for moving a top-level community post.

Authors can move their own posts into same-intent forums they can write
to. Global community forum-move admins can move any top-level post while
the original composer intent remains unchanged.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID being moved.
q string İsteğe Bağlı (empty string) Optional forum name, slug, city, or description search text.
limit int İsteğe Bağlı 20 Maximum number of forum options to return.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_post_forum_move_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588' \
  --data-urlencode 'q=los angeles' \
  --data-urlencode 'limit=20'

Dönüşler

NestedKeyValueList

{ postId, canMoveForum, currentBoard, options }
GET

/v1/community/get_post_presence

#
Returns signed-in users who have viewed a thread, plus live socket presence for that thread. Public-by-design: public community boards expose thread viewer identity to readers of that thread; restricted boards remain gated except for the selected board About thread.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 Top-level ATDiscussionPosts.ID for the thread.
cursor string İsteğe Bağlı (empty string) Opaque pagination cursor from the previous response.
limit int İsteğe Bağlı 30 Max viewers (1-100).
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_post_presence' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=1436696' \
  --data-urlencode 'cursor={{cursor}}' \
  --data-urlencode 'limit=30'

Dönüşler

NestedKeyValueList

{ viewers, totalSeenUserCount, followedSeenUserCount, otherSeenUserCount, onlineCount, nextCursor, hasMore }
GET

/v1/community/get_post_reposts

#
Returns people who reposted a visible community post.

Public-by-design: the v2 newsfeed exposes the aggregate repost count on
public post cards. This endpoint only returns repost wrapper posts the
current viewer can read.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID shown in the newsfeed.
limit int İsteğe Bağlı 50 Maximum reposters to return, capped at 100.
offset int İsteğe Bağlı 0 Paging offset for the reposter list.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_post_reposts' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=1436696' \
  --data-urlencode 'limit=50' \
  --data-urlencode 'offset={{offset}}'

Dönüşler

NestedKeyValueList

{ PostID, SourcePostID, TotalCount, VisibleCount, HiddenCount, Reposts: [{ userID, alias, avatar, profileUrl, display, repostPostID, repostedAt, repostedAtRel }], Page: { limit, offset, hasMore } }
GET

/v1/community/get_reaction_options

#
Returns the emoji reaction allowlist used by posts and chat messages.

Public-by-design: this exposes only static UI configuration and no
user, post, chat, or marketplace data.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_reaction_options' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList

{ options: [{key, emoji, label}], defaultReactionKey }
GET

/v1/community/get_reactions

#
Returns emoji reaction totals for a post or chat message.

Public-by-design for public community posts: this returns only aggregate
reaction counts. Restricted boards and chat messages are still gated.

Public community posts can be read by anonymous viewers when the board is
public; chat message reactions require chat membership and include recent
actortimestamp metadata for message details.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
targetType string İsteğe Bağlı (empty string) post or chat_message.
targetId int İsteğe Bağlı 0 ATDiscussionPosts.ID or ATNotificationsBody.ID.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_reactions' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'targetType=post' \
  --data-urlencode 'targetId=295588'

Dönüşler

NestedKeyValueList

{ targetType, targetId, viewerReactionKey, viewerHasReacted, totalCount, counts, recent: [{userID, username, reactionKey, reactionEmoji, createdDate, createdDateDisplay, lastUpdateDate, lastUpdateDateDisplay, reactedDate, reactedDateDisplay}] }
GET

/v1/community/get_repost_composer_context

#
Returns the context required to open the composer for a rich repost. The source post is serialized through the same newsfeed post serializer
in compact embedded mode; the client does not receive a parallel mini
post shape.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID to repost.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/community/get_repost_composer_context' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=1436696'

Dönüşler

NestedKeyValueList

{ sourcePost, repostSourcePostID, defaultBoard, selectedBoardID }
POST

/v1/community/set_add_post_media

#
Adds uploaded media to a post owned by the current user.

Reusable post-edit media endpoint. About Me uses imageOnly=1 so profile
media stays selectable; future post editing can pass imageOnly=0 for all
supported ATMedia attachment types.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID owned by the current user.
mediaIdList string İsteğe Bağlı (empty string) Comma-separated ATMedia IDs the current user uploaded.
imageOnly int İsteğe Bağlı 0 Pass 1 to require image media only.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to true once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_add_post_media' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=1436696' \
  --data-urlencode 'mediaIdList=123,124' \
  --data-urlencode 'imageOnly=1' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ post, Media, attachedMediaIDs }
POST

/v1/community/set_apply_for_board_president

#
Applies to lead a community board that does not currently have a president.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
boardId int İsteğe Bağlı 0 ATDiscussionBoards.ID.
message string İsteğe Bağlı (empty string) Optional note to the administrators reviewing the application.
isWritingRequest bool İsteğe Bağlı false Required true to create the application chat.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_apply_for_board_president' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'boardId=123' \
  --data-urlencode 'message=I can help moderate this community.' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ApplicationID, ChatID, ChatUrl, Created }
POST

/v1/community/set_board_about_post

#
Sets or clears a community board profile About post and optional image selections from that post's attached media.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
boardId int İsteğe Bağlı 0 ATDiscussionBoards.ID.
forumAlias string İsteğe Bağlı (empty string) Optional v2 forum alias fallback.
postID int İsteğe Bağlı 0 Board-local top-level ATDiscussionPosts.ID with at least two attached images. Pass 0 to clear.
profileImageMediaID int İsteğe Bağlı 0 Attached image ATMedia.ID to use as the community profile image. Pass 0 for no framed profile image.
bannerImageMediaID int İsteğe Bağlı 0 Attached image ATMedia.ID to use as the community banner. Pass 0 for no banner.
profileImagePositionXPercent int İsteğe Bağlı 50 Profile image horizontal framing position, 0-100.
profileImagePositionYPercent int İsteğe Bağlı 50 Profile image vertical framing position, 0-100.
profileImageZoomPercent int İsteğe Bağlı 100 Profile image zoom percentage, 100-300.
bannerImagePositionXPercent int İsteğe Bağlı 50 Banner image horizontal framing position, 0-100.
bannerImagePositionYPercent int İsteğe Bağlı 50 Banner image vertical framing position, 0-100.
bannerImageZoomPercent int İsteğe Bağlı 100 Banner image zoom percentage, 100-300.
updatePostTitle int İsteğe Bağlı 0 Pass 1 to update the selected post title when saving.
postTitle string İsteğe Bağlı (empty string) Replacement selected-post title. Only the post author can change it.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to true once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_board_about_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'boardId=123' \
  --data-urlencode 'forumAlias=discussion-123' \
  --data-urlencode 'postID=1436696' \
  --data-urlencode 'profileImageMediaID={{profileImageMediaID}}' \
  --data-urlencode 'bannerImageMediaID={{bannerImageMediaID}}' \
  --data-urlencode 'profileImagePositionXPercent=50' \
  --data-urlencode 'profileImagePositionYPercent=50' \
  --data-urlencode 'profileImageZoomPercent=100' \
  --data-urlencode 'bannerImagePositionXPercent=50' \
  --data-urlencode 'bannerImagePositionYPercent=50' \
  --data-urlencode 'bannerImageZoomPercent=100' \
  --data-urlencode 'updatePostTitle={{updatePostTitle}}' \
  --data-urlencode 'postTitle=About this community' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Saved community intro postmedia selection.
POST

/v1/community/set_board_president

#
Assigns, clears, approves, or rejects a board president.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
boardId int İsteğe Bağlı 0 ATDiscussionBoards.ID when directly assigning or clearing.
userId int İsteğe Bağlı 0 ATUser.ID to assign as president; pass 0 to clear.
applicationId int İsteğe Bağlı 0 Optional ATDiscussionBoardPresidentApplications.ID to approvereject.
decision string İsteğe Bağlı approve approve or reject when applicationId is set.
message string İsteğe Bağlı (empty string) Optional decision note.
isWritingRequest bool İsteğe Bağlı false Required true to persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_board_president' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'boardId=123' \
  --data-urlencode 'userId=21939' \
  --data-urlencode 'applicationId=42' \
  --data-urlencode 'decision=approve' \
  --data-urlencode 'message=Approved after admin review.' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ Leadership, Status }
POST

/v1/community/set_board_secretary

#
Assigns or clears a board secretary and delegated board-scoped capabilities.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
boardId int İsteğe Bağlı 0 ATDiscussionBoards.ID.
userId int İsteğe Bağlı 0 Secretary ATUser.ID.
capabilities string İsteğe Bağlı (empty string) Comma-separated or JSON list of delegated capabilities.
remove bool İsteğe Bağlı false If true, clears the secretary row.
isWritingRequest bool İsteğe Bağlı false Required true to persist.
userAlias string İsteğe Bağlı (empty string) Optional secretary user alias when userId is not provided.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_board_secretary' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'boardId=123' \
  --data-urlencode 'userId=21939' \
  --data-urlencode 'capabilities=read,write,delete' \
  --data-urlencode 'remove=false' \
  --data-urlencode 'isWritingRequest=false' \
  --data-urlencode 'userAlias=ColorfulRod45'

Dönüşler

NestedKeyValueList

{ Leadership }
POST

/v1/community/set_chat_action

#
Executes a chat action button owned by the calling user.

The client sends only the action row ID; the server re-reads the stored
payload before calling the ActionButton class so stale or forged client
payloads cannot execute another user's action.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
actionButtonID int İsteğe Bağlı 0 ATNotificationIntelligentTagsActionButtons.ID.
getParametersJson string İsteğe Bağlı (empty string) Optional JSON object passed to the ActionButton OnConfirm GetParameters argument.
globalParametersJson string İsteğe Bağlı (empty string) Optional JSON object passed to the ActionButton OnConfirm GlobalParameters argument.
isWritingRequest bool İsteğe Bağlı false Required true to execute.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_chat_action' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'actionButtonID={{actionButtonID}}' \
  --data-urlencode 'getParametersJson={}' \
  --data-urlencode 'globalParametersJson={}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ActionButtonID, ChatID, RedirectURL, ClientAction, OpenChatDock }
POST

/v1/community/set_chat_add_participant

#
Adds one user to a chat. Hosts may add only users who accepted a 1:1 chat with that host. Global community administrators may add any non-deleted user by alias. Existing participants return success without writing a duplicate access row.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID of the chat.
userAlias string İsteğe Bağlı (empty string) Alias to add, with or without leading @.
isWritingRequest bool İsteğe Bağlı false Required true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_chat_add_participant' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'userAlias=fluffy' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ChatID, AlreadyParticipant, AddedUser, Participants, ParticipantCount, CanAddParticipants, AddParticipantMode }
POST

/v1/community/set_chat_archive

#
Archives a chat visible to the calling user.
This uses the same global activeinactive status that powers the legacy
and native chat inbox archived views.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID of the chat.
isWritingRequest bool İsteğe Bağlı false Required true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_chat_archive' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ChatID, Status }
POST

/v1/community/set_chat_message

#
Sends a message into a chat the calling user has access to.

Uses the shared NotificationTags chat-send helper that legacy chat
message flows also depend on. On success, returns the just-created
message in the same shape get_chat_messages emits, so the front end can
append it through the same render pipeline (and the next pollwebsocket
tick will dedupe its echo against that key).
Pending profile chat requesters may send up to three request messages,
with each follow-up available after a 24-hour cooldown.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID.
message string İsteğe Bağlı (empty string) Plain textrich-input message body. Ready URL previews serialize as [richlink data-previewid="..."]url[richlink]. Can be empty when mediaIdList is provided.
mediaIdList string İsteğe Bağlı (empty string) Comma-separated ATMedia IDs the user owns.
requestDirectHire bool İsteğe Bağlı false When true in a 1:1 chat, attaches a recipient-only button that opens Add a Plan with the sender tagged.
replyToNotificationBodyID int İsteğe Bağlı 0 Optional ATNotificationsBody.ID from this same chat to quote above the new message.
isWritingRequest bool İsteğe Bağlı false Required true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_chat_message' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'message=Hello' \
  --data-urlencode 'mediaIdList={{mediaIdList}}' \
  --data-urlencode 'requestDirectHire=false' \
  --data-urlencode 'replyToNotificationBodyID={{replyToNotificationBodyID}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ChatID, Message: {CreatedDate, SenderID, SenderAlias, SenderAvatar, SenderDisplay, SenderDisplayHTML, Subject, Body, DestinationPage, Media: explicit attachment gallery media only [{id, thumbUrl, mediaUrl, mediaType, width, height, title}], RichLinks: [{id, url, canonicalUrl, title, description, siteName, image}], ActionButtons, Delivery: {NotificationID, RecipientCount, Recipients: [{NotificationID, UserID, Username, State, CreatedDate, LastUpdateDate, PushSendTime, PushReceiveTime, PushOpenTime, EmailSendTime, EmailOpenTime, ReadTime}]}, ReplyContext: { NotificationBodyID, SenderID, SenderAlias, Preview, HasMedia }, translation: { senderLocaleCode, senderLanguageCode, receiverLanguageCode, ... }}, UserToUser, HireDirect, HireDirectRequest }
POST

/v1/community/set_chat_minimized_unread_dismissal

#
Saves the caller's minimized unread chat dismissal through the latest
server-known unread body for that active chat.

The client only supplies the chat id; the body id is resolved server-side
so a stale or tampered browser can not suppress newer unread messages.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID.
isWritingRequest bool İsteğe Bağlı false Required true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_chat_minimized_unread_dismissal' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ChatID, DismissedThroughNotificationBodyID }
POST

/v1/community/set_chat_mute

#
Mutes or unmutes one chat for the requesting user.

This is viewer-private and works for any chat the caller can already
access. Muted chats remain readable, but the v2 dock treats them as
non-urgent and will not auto-surface them as minimized unread windows.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID of the chat.
isMuted bool İsteğe Bağlı false True to mute, false to unmute.
isWritingRequest bool İsteğe Bağlı false Required true to persist the change.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_chat_mute' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'isMuted=true' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ChatID, IsMuted, MutedDate }
POST

/v1/community/set_chat_name

#
Renames a chat. Only the chat host (Creator-ATUser_ID) may rename.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID.
name string İsteğe Bağlı (empty string) New chat name (1-250 chars).
isWritingRequest bool İsteğe Bağlı false Required true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_chat_name' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'name=My Chat' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ChatID, Name, nameTranslation }
POST

/v1/community/set_chat_pin

#
Pins or unpins a chat for the requesting user's v2 chat lists.

The pin state is viewer-private and only applies to chats the caller can
already access. Pinned chats sort above recent unpinned chats.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID of the chat.
isPinned bool İsteğe Bağlı false True to pin, false to unpin.
isWritingRequest bool İsteğe Bağlı false Required true to persist the change.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_chat_pin' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'isPinned=true' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ChatID, IsPinned, SortOrder }
POST

/v1/community/set_chat_read

#
Marks every unread notification belonging to this chat as Read for the
caller. Used by the v2 chat dock once the user has been "actively
engaged" (hoverscrollinput focus) with a chat for ≥2 seconds — the
client-side debounce avoids marking-on-glance.

Idempotent: messages already in 'Read' state are skipped at the SQL
level, so re-calling on a chat with nothing new is a cheap no-op.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID.
isWritingRequest bool İsteğe Bağlı false Required true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_chat_read' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ChatID, Marked }
POST

/v1/community/set_chat_typing

#
Relays ephemeral chat typing presence to other participants.

This intentionally does not persist any state. It only validates the
caller has access to the chat, then emits websocket nudges with minimal
context so authorized clients can render local typing indicators.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID.
isTyping bool İsteğe Bağlı false True while the user is actively typing, false to clear.
isWritingRequest bool İsteğe Bağlı false Required true to actually publish the nudge.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_chat_typing' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'isTyping=true' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ChatID, IsTyping, Sent, ExpiresAt }
POST

/v1/community/set_create_poll_answer_for_question

#
Create a new answer option for the Question

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
questionID int Gerekli ID Identifying the Question
answerTitle string Gerekli Title of the possible answer
answerDescription string İsteğe Bağlı (empty string) Description of the possible answer
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_create_poll_answer_for_question' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'questionID={{questionID}}' \
  --data-urlencode 'answerTitle=Option A' \
  --data-urlencode 'answerDescription=Option A is a great choice' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Created answer id and refreshed poll payload.
POST

/v1/community/set_create_poll_question_for_post

#
Create a new poll question for the Post
You will be able to add questions after completing this step.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postID int Gerekli ID Identifying the Post
questionName string Gerekli Title of the Question
questionDescription string İsteğe Bağlı (empty string) Description of your question
unicodeIcon string İsteğe Bağlı (empty string) Unicode Emoji that represents the question
endDateTime string İsteğe Bağlı (empty string) Unitl when can this question be answered?
Leave Empty if there is no end date.
Date format: YYYY-MM-DD HH:MM:SS
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_create_poll_question_for_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postID={{postID}}' \
  --data-urlencode 'questionName={{questionName}}' \
  --data-urlencode 'questionDescription={{questionDescription}}' \
  --data-urlencode 'unicodeIcon=✴️' \
  --data-urlencode 'endDateTime=2026-06-26 18:15:00' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Created question id and refreshed poll payload.
POST

/v1/community/set_create_post

#
Composer endpoint - creates a post (or top-level reply) in a board. Wraps Community::CreatePost so iOSAndroid and the v2 web client share one path. Throttled to one post per 15 seconds per session (same as the legacy APIcreate_post.php).

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
boardId int Gerekli Board to post into.
title string İsteğe Bağlı (empty string) Optional post title. Leave empty to hide the title and use the body as the internal fallback title.
body string İsteğe Bağlı (empty string) Post body. Ready URL previews serialize as [richlink data-previewid="..."]url[richlink].
parentPostId int İsteğe Bağlı 0 Optional parent post ID to make this a top-level reply. Pass 0 for a new thread.
mediaIdList string İsteğe Bağlı (empty string) Comma-separated ATMedia IDs the user owns; ownership is re-verified server-side.
rating int İsteğe Bağlı 0 Optional 1-5 rating for review boards. Pass 0 for non-reviews.
searchRequestID int İsteğe Bağlı 0 Optional ATLocationCustomSearchRequests.ID from the intent composer, linked after post creation when owned by the caller.
hidePostTitle int İsteğe Bağlı 0 Optional 10 flag. Use 1 for composer-created regular posts where the title is only a generated storage fallback.
sharePlanAppointmentID int İsteğe Bağlı 0 Optional owned upcoming ATAppointment.ID required for sharePlans boards.
sharePlanShareAttendees int İsteğe Bağlı 0 Optional 10 flag for sharePlans posts. When 1, the public plan card may show AppointmentTrader guests attached to the plan.
repostSourcePostID int İsteğe Bağlı 0 Optional ATDiscussionPosts.ID to attach as a rich repost source.
listingIDList string İsteğe Bağlı (empty string) Optional comma-separated ATAppointment.ID or ListingUUID values owned by the current user to attach to the new post.
composerID string İsteğe Bağlı (empty string) Optional stable composer ID for first-touch completion tracking.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_create_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'boardId=10' \
  --data-urlencode 'title=Best dim sum spots in Miami' \
  --data-urlencode 'body=Looking for recommendations near Brickell.' \
  --data-urlencode 'parentPostId={{parentPostId}}' \
  --data-urlencode 'mediaIdList={{mediaIdList}}' \
  --data-urlencode 'rating={{rating}}' \
  --data-urlencode 'searchRequestID={{searchRequestID}}' \
  --data-urlencode 'hidePostTitle={{hidePostTitle}}' \
  --data-urlencode 'sharePlanAppointmentID={{sharePlanAppointmentID}}' \
  --data-urlencode 'sharePlanShareAttendees={{sharePlanShareAttendees}}' \
  --data-urlencode 'repostSourcePostID={{repostSourcePostID}}' \
  --data-urlencode 'listingIDList={{listingIDList}}' \
  --data-urlencode 'composerID=sellers-listings' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ post: }
POST

/v1/community/set_create_review

#
Creates a verified review post for a location or a post-sale counterparty review request.

Post-sale user ratings are request-bound: the server resolves the target board from
ATReviewRequests and ignores client-selected user review boards. Free-form venue
reviews may pass targetType=location and targetID=ATLocation.ID.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
reviewRequestID int İsteğe Bağlı 0 ATReviewRequests.ID for buyer-to-seller or seller-to-buyer ratings. Use 0 for free-form location reviews.
targetType string İsteğe Bağlı location Review target type: user or location. User reviews require reviewRequestID.
targetRole string İsteğe Bağlı (empty string) Target role for request-bound reviews: seller or buyer. Ignored for free-form location reviews.
targetID int İsteğe Bağlı 0 ATLocation.ID for location reviews. Ignored for request-bound user reviews.
boardId int İsteğe Bağlı 0 Optional client-selected board for location reviews; user review requests resolve the board server-side.
rating int İsteğe Bağlı 0 Required star rating from 1 to 5.
body string İsteğe Bağlı (empty string) User-authored review text. The endpoint never generates review text.
mediaIdList string İsteğe Bağlı (empty string) Comma-separated ATMedia IDs the user owns; ownership is re-verified server-side.
searchRequestID int İsteğe Bağlı 0 Optional ATLocationCustomSearchRequests.ID from the intent composer, linked after post creation when owned by the caller.
composerID string İsteğe Bağlı (empty string) Optional stable composer ID for first-touch completion tracking.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to true once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_create_review' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'reviewRequestID={{reviewRequestID}}' \
  --data-urlencode 'targetType=location' \
  --data-urlencode 'targetRole=seller' \
  --data-urlencode 'targetID=123' \
  --data-urlencode 'boardId={{boardId}}' \
  --data-urlencode 'rating=5' \
  --data-urlencode 'body=Great communication and smooth handoff.' \
  --data-urlencode 'mediaIdList={{mediaIdList}}' \
  --data-urlencode 'searchRequestID={{searchRequestID}}' \
  --data-urlencode 'composerID=review' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ post: , reviewContext?: {...} }
POST

/v1/community/set_delete_post

#
Deletes a community post when the viewer has delete rights.

Reuses Community::DeletePost(...) so moderator penalties, traderpoint
reimbursement, and post-delete events remain shared with legacy.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID being deleted.
reason string İsteğe Bağlı (empty string) User-entered delete reason.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_delete_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588' \
  --data-urlencode 'reason=Duplicate post' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ postId, deleted }
POST

/v1/community/set_location_about_post

#
Sets or clears a location profile About post and optional image selections from that post's attached media. Any signed-in user may set the selected intro; only the post author may change the selected post title.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int İsteğe Bağlı 0 ATLocation.ID.
locationAlias string İsteğe Bağlı (empty string) Optional public location alias fallback.
postID int İsteğe Bağlı 0 Location-connected top-level ATDiscussionPosts.ID with at least two attached images. Pass 0 to clear.
profileImageMediaID int İsteğe Bağlı 0 Attached image ATMedia.ID to use as the location profile image. Pass 0 for no framed profile image.
bannerImageMediaID int İsteğe Bağlı 0 Attached image ATMedia.ID to use as the location banner. Pass 0 for no banner.
profileImagePositionXPercent int İsteğe Bağlı 50 Profile image horizontal framing position, 0-100.
profileImagePositionYPercent int İsteğe Bağlı 50 Profile image vertical framing position, 0-100.
profileImageZoomPercent int İsteğe Bağlı 100 Profile image zoom percentage, 100-300.
bannerImagePositionXPercent int İsteğe Bağlı 50 Banner image horizontal framing position, 0-100.
bannerImagePositionYPercent int İsteğe Bağlı 50 Banner image vertical framing position, 0-100.
bannerImageZoomPercent int İsteğe Bağlı 100 Banner image zoom percentage, 100-300.
updatePostTitle int İsteğe Bağlı 0 Pass 1 to update the selected post title when saving.
postTitle string İsteğe Bağlı (empty string) Replacement selected-post title. Only the post author can change it.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to true once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_location_about_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=123' \
  --data-urlencode 'locationAlias=carbone-new-york' \
  --data-urlencode 'postID=1436696' \
  --data-urlencode 'profileImageMediaID={{profileImageMediaID}}' \
  --data-urlencode 'bannerImageMediaID={{bannerImageMediaID}}' \
  --data-urlencode 'profileImagePositionXPercent=50' \
  --data-urlencode 'profileImagePositionYPercent=50' \
  --data-urlencode 'profileImageZoomPercent=100' \
  --data-urlencode 'bannerImagePositionXPercent=50' \
  --data-urlencode 'bannerImagePositionYPercent=50' \
  --data-urlencode 'bannerImageZoomPercent=100' \
  --data-urlencode 'updatePostTitle={{updatePostTitle}}' \
  --data-urlencode 'postTitle=About this venue' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Saved location intro postmedia selection.
POST

/v1/community/set_newsfeed_filter_state

#
Saves the signed-in viewer's per-feed v2 newsfeed filter state.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
stateJson array Gerekli JSON object with activeFeed and per-feed filter entries.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_newsfeed_filter_state' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'stateJson={"version":1,"activeFeed":"requests","feeds":{"for_you":{"filter":"","filters":{"audience":"all","freshness":"all"}},"offers":{"filter":"","filters":{"audience":"all","freshness":"all"}},"requests":{"filter":"my_posts","filters":{"audience":"my_posts","freshness":"all"}}}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ feedFilterState }
POST

/v1/community/set_post_action

#
Executes a visible action button for one community post.

The client sends only the post ID and action row token. The server
re-reads the post and merged action row, checks read access, asks the
action class to render the button again, and only then calls OnConfirm.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID being acted on.
actionButtonID string İsteğe Bağlı (empty string) Serialized action row token such as board:123 or post:456.
getParametersJson string İsteğe Bağlı (empty string) Optional JSON object passed to the action OnConfirm GetParameters argument.
globalParametersJson string İsteğe Bağlı (empty string) Optional JSON object passed to the action OnConfirm GlobalParameters argument.
isWritingRequest bool İsteğe Bağlı false Required true to execute.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_post_action' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588' \
  --data-urlencode 'actionButtonID=board:123' \
  --data-urlencode 'getParametersJson={}' \
  --data-urlencode 'globalParametersJson={}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ PostID, ActionButtonID, RedirectURL, ClientAction, FeedbackTitle, FeedbackMessage, RefreshPost }
POST

/v1/community/set_post_forum

#
Moves a top-level community post into another forum with the same composer intent.

Authors can move their own posts into same-intent forums they can write
to. Global community forum-move admins can move any top-level post while
the original composer intent remains unchanged.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID being moved.
boardId int İsteğe Bağlı 0 Target ATDiscussionBoards.ID with the same composer intent.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_post_forum' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588' \
  --data-urlencode 'boardId=8' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ postId, oldBoardId, board, post }
POST

/v1/community/set_post_public_release_date

#
Sets or clears the public release date for a top-level community post.

Authors and users with GlobalCommunityAdministration can schedule posts
for a future public release. Pass an empty value, `clear`, or `publish-now`
to clear the release date and make the post public immediately.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID being scheduled.
publicReleaseDate string İsteğe Bağlı (empty string) Future release datetime in server-local time. Use empty to publish now.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_post_public_release_date' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588' \
  --data-urlencode 'publicReleaseDate=2026-05-13 14:30:00' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ postId, publicRelease }
POST

/v1/community/set_reaction

#
Sets, switches, or removes the caller's emoji reaction.

An empty reactionKey removes the caller's reaction. The server enforces
one active reaction per user per target, allowlisted keys only, target
access, and no self-reactions.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
targetType string İsteğe Bağlı (empty string) post or chat_message.
targetId int İsteğe Bağlı 0 ATDiscussionPosts.ID or ATNotificationsBody.ID.
reactionKey string İsteğe Bağlı (empty string) Allowlisted reaction key; empty removes.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_reaction' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'targetType=post' \
  --data-urlencode 'targetId=295588' \
  --data-urlencode 'reactionKey=money_with_wings' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ targetType, targetId, viewerReactionKey, viewerHasReacted, totalCount, counts, recent: [{userID, username, reactionKey, reactionEmoji, createdDate, createdDateDisplay, lastUpdateDate, lastUpdateDateDisplay, reactedDate, reactedDateDisplay}] }
POST

/v1/community/set_record_post_big_view_open

#
Records that the viewer opened the immersive newsfeed post view.

Public-by-design: this only updates the viewer's deduped community view
row with aggregate open metadata and returns no private data; board access
is still checked before recording.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 The opened ATDiscussionPosts row ID.
origin string İsteğe Bağlı newsfeed:big_view Free-form origin tag, e.g. "newsfeed:big_view".
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_record_post_big_view_open' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588' \
  --data-urlencode 'origin=newsfeed:big_view' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ postId, recorded }
POST

/v1/community/set_record_post_view

#
Records that the viewer has seen a newsfeed post.

Public-by-design: community view counting already supports anonymous
readers by IP and returns no private data; board access is still checked.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 The viewed ATDiscussionPosts row ID.
origin string İsteğe Bağlı newsfeed Free-form origin tag, e.g. "newsfeed:trending".
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_record_post_view' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588' \
  --data-urlencode 'origin=newsfeed:trending' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ postId, recorded }
POST

/v1/community/set_report_post

#
Reports a community post to moderators.

Reuses the legacy Community::ReportPost(...) path so moderator
notification behavior stays shared with the old community container.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int İsteğe Bağlı 0 ATDiscussionPosts.ID being reported.
reason string İsteğe Bağlı (empty string) User-entered report reason.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_report_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588' \
  --data-urlencode 'reason=Spam or abusive content' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ postId, reported }
POST

/v1/community/set_submit_vote_for_question

#
Saves a poll answer

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
questionID int Gerekli ID Identifying the Question
selectedAnswerID int Gerekli ID of the user selected answer
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_submit_vote_for_question' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'questionID={{questionID}}' \
  --data-urlencode 'selectedAnswerID={{selectedAnswerID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Refreshed poll payload.
POST

/v1/community/set_thumbs_up

#
Toggles the current user's legacy thumbs-up reaction on a post.

No active reaction sets thumbs_up; active thumbs_up removes it.
Existing emoji reactions make this a compatibility wrapper for
switching older clients back to thumbs_up.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postId int Gerekli Post being thumbed.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_thumbs_up' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postId=295588' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ thumbsUp, viewerHasThumbed, viewerReactionKey, reactions }
POST

/v1/community/set_track_chat_mention_click

#
Records a click on a venueuser mention inside a chat message. Used by the v2 chat dock before normal navigation. Venue clicks can make the sender eligible for the existing short direct-hire bid window.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
mentionId int Gerekli The ATNotificationsBodyMentions row ID.
origin string İsteğe Bağlı (empty string) Free-form origin tag, e.g. "chatdock:123".
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_track_chat_mention_click' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'mentionId=12345' \
  --data-urlencode 'origin=chatdock:123' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if recorded
POST

/v1/community/set_track_mention_click

#
Records a click on a post's tagmention chip.

Backs the attribution chain that connects a post → mention → click → transaction.
Called via navigator.sendBeacon from the client so the request survives navigation.
Public-by-design: anonymous mention clicks are part of attribution analytics and expose no private data.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
mentionId int Gerekli The ATDiscussionPostsMentions row ID.
postId int Gerekli The owning post ID (for cache + sanity check).
origin string İsteğe Bağlı (empty string) Free-form origin tag, e.g. "newsfeed:all" — captured for analytics.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_track_mention_click' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'mentionId=12345' \
  --data-urlencode 'postId=295588' \
  --data-urlencode 'origin=newsfeed:all' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if recorded
POST

/v1/community/set_url_preview

#
Fetches, sanitizes, and stores a URL preview for an authenticated rich-input composer action. The preview fetch happens only on behalf of the creator before send. The saved card stores titledescriptionsite metadata and, when available, a locally cached image ATMedia record. Readers render only persisted metadatalocal media and never fetch remote preview assets.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
url string İsteğe Bağlı (empty string) Absolute httphttps URL to preview.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to true once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/community/set_url_preview' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'url=https:appointmenttrader.com' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ preview: { id, url, canonicalUrl, host, siteName, title, description, imageMediaID, image: { mediaID, mediaUrl, thumbUrl, mediaType, width, height } } }

/v1/external_messaging/

External Messaging Channel-neutral outbound messaging control plane. Phase one supports email, with shared identities, billing, events, suppressions, and delivery health designed for future channels such as SMS or WhatsApp.

GET

/v1/external_messaging/get_billing_settings

#
Returns billing settings and the selected default AT funding account.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
channel string İsteğe Bağlı all Billing channel. Use all for the default setting.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/external_messaging/get_billing_settings' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'channel={{channel}}'

Dönüşler

array
GET

/v1/external_messaging/get_channels

#
Returns supported external messaging channels.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/external_messaging/get_channels' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

array
GET

/v1/external_messaging/get_delivery_health

#
Returns delivery health counters for the API user.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/external_messaging/get_delivery_health' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

array
GET

/v1/external_messaging/get_events

#
Returns the event timeline for a message.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
messageID string İsteğe Bağlı (empty string) Message numeric ID or UUID.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/external_messaging/get_events' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'messageID={{messageID}}'

Dönüşler

array
GET

/v1/external_messaging/get_identities

#
Returns sender identities owned by the API user.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
channel string İsteğe Bağlı email Channel to list. Phase one supports email.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/external_messaging/get_identities' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'channel={{channel}}'

Dönüşler

array
GET

/v1/external_messaging/get_identity_dns_status

#
Returns expected and last observed DNS state for an identity.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
identityID int İsteğe Bağlı 0 Sender identity ID.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/external_messaging/get_identity_dns_status' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'identityID={{identityID}}'

Dönüşler

array
GET

/v1/external_messaging/get_message

#
Returns a queuedsent message by numeric ID or UUID.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
messageID string İsteğe Bağlı (empty string) Message numeric ID or UUID.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/external_messaging/get_message' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'messageID={{messageID}}'

Dönüşler

array
GET

/v1/external_messaging/get_messages

#
Returns recent messages for the API user.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
channel string İsteğe Bağlı email Channel filter.
status string İsteğe Bağlı (empty string) Optional status filter.
limit int İsteğe Bağlı 50 Maximum rows to return.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/external_messaging/get_messages' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'channel={{channel}}' \
  --data-urlencode 'status={{status}}' \
  --data-urlencode 'limit={{limit}}'

Dönüşler

array
GET

/v1/external_messaging/get_suppressions

#
Returns active suppressions for the API user.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
channel string İsteğe Bağlı email Channel filter.
limit int İsteğe Bağlı 50 Maximum rows to return.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/external_messaging/get_suppressions' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'channel={{channel}}' \
  --data-urlencode 'limit={{limit}}'

Dönüşler

array
POST

/v1/external_messaging/set_billing_account

#
Sets the default AT account used to pay for accepted production messages.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
fundingAccountID int İsteğe Bağlı 0 AT account ID owned by the API user.
channel string İsteğe Bağlı all Billing channel. Use all for the default setting.
isWritingRequest bool İsteğe Bağlı false Must be true to update billing settings.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/external_messaging/set_billing_account' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'fundingAccountID={{fundingAccountID}}' \
  --data-urlencode 'channel={{channel}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

array
POST

/v1/external_messaging/set_identity

#
Creates an email sender identity and returns the DNS records needed for verification.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
channel string İsteğe Bağlı email Channel to create. Phase one supports email.
fromAddress string İsteğe Bağlı (empty string) Sender email address.
fromName string İsteğe Bağlı (empty string) Human readable sender name.
name string İsteğe Bağlı (empty string) Internal identity label.
stream string İsteğe Bağlı transactional Email stream: auth, transactional, community, or bulk.
isWritingRequest bool İsteğe Bağlı false Must be true to create the identity.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/external_messaging/set_identity' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'channel={{channel}}' \
  --data-urlencode 'fromAddress={{fromAddress}}' \
  --data-urlencode 'fromName={{fromName}}' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'stream={{stream}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

array
POST

/v1/external_messaging/set_identity_verify_dns

#
Checks DNS records for an email sender identity and marks it verified when required records are present.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
identityID int İsteğe Bağlı 0 Sender identity ID.
isWritingRequest bool İsteğe Bağlı false Must be true to record the DNS check.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/external_messaging/set_identity_verify_dns' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'identityID={{identityID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

array
POST

/v1/external_messaging/set_mta_event

#
Records an internal first-party MTA event for a message.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
messageID string İsteğe Bağlı (empty string) Message numeric ID or UUID.
eventType string İsteğe Bağlı (empty string) Event type such as smtp_accepted, bounce, complaint, or deferred.
providerMessageID string İsteğe Bağlı (empty string) Internal provider message ID from the MTA.
payloadJson string İsteğe Bağlı (empty string) JSON event payload.
isWritingRequest bool İsteğe Bağlı false Must be true to record the event.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/external_messaging/set_mta_event' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'messageID={{messageID}}' \
  --data-urlencode 'eventType={{eventType}}' \
  --data-urlencode 'providerMessageID={{providerMessageID}}' \
  --data-urlencode 'payloadJson={{payloadJson}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

array
POST

/v1/external_messaging/set_send

#
Queues an external message. Phase one supports email only. Production email requires a verified sender identity and is charged after the first-party MTA records smtp_accepted. Sandbox messages are free and do not submit to the MTA.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
channel string İsteğe Bağlı email Channel. Phase one supports email.
identityID int İsteğe Bağlı 0 Sender identity ID.
to string İsteğe Bağlı (empty string) Comma-separated recipient email addresses.
subject string İsteğe Bağlı (empty string) Message subject.
htmlBody string İsteğe Bağlı (empty string) HTML body.
textBody string İsteğe Bağlı (empty string) Plain text body.
stream string İsteğe Bağlı transactional Email stream: auth, transactional, community, bulk, or sandbox.
mode string İsteğe Bağlı sandbox sandbox or production.
fundingAccountID int İsteğe Bağlı 0 Optional per-message AT funding account override.
isWritingRequest bool İsteğe Bağlı false Must be true to queue the message.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/external_messaging/set_send' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'channel={{channel}}' \
  --data-urlencode 'identityID={{identityID}}' \
  --data-urlencode 'to={{to}}' \
  --data-urlencode 'subject={{subject}}' \
  --data-urlencode 'htmlBody={{htmlBody}}' \
  --data-urlencode 'textBody={{textBody}}' \
  --data-urlencode 'stream={{stream}}' \
  --data-urlencode 'mode={{mode}}' \
  --data-urlencode 'fundingAccountID={{fundingAccountID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

array
POST

/v1/external_messaging/set_suppression

#
Adds a user-level suppression for a recipient.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
channel string İsteğe Bağlı email Channel. Phase one supports email.
recipient string İsteğe Bağlı (empty string) Recipient email address.
type string İsteğe Bağlı manual Suppression type.
reason string İsteğe Bağlı (empty string) Operator or application reason.
isWritingRequest bool İsteğe Bağlı false Must be true to create the suppression.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/external_messaging/set_suppression' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'channel={{channel}}' \
  --data-urlencode 'recipient={{recipient}}' \
  --data-urlencode 'type={{type}}' \
  --data-urlencode 'reason={{reason}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

array

/v1/user/

Contains all user related functions

POST

/v1/user/get

#
Searches all user aliasses

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) filter criteria
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/get' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing Requirements matching the searchquery defined in filter
GET

/v1/user/get_alternative_access_userlist

#
List of users who can access this account

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
content string Gerekli Define if users that can access this account or users that this account can access should be returned.
Values can be "accountsThatCanAccessThisAccount" or "accountsThatCanBeAccessed"
omitExpiredAccessKeys bool İsteğe Bağlı true Defines if expired access keys should be returned or not.
pageSize int İsteğe Bağlı 200 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_alternative_access_userlist' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'content=accessibleAccounts' \
  --data-urlencode 'omitExpiredAccessKeys={{omitExpiredAccessKeys}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing the appropriate transaction history
GET

/v1/user/get_alternative_session_lifetime_presets

#
Returns a commonly used list of preset values
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_alternative_session_lifetime_presets' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList
GET

/v1/user/get_community_verification_center

#
Returns the acting user's community verification center payload. This powers the native v2 account verification center. The invitee verification flow remains the existing verify{uuid} route; this endpoint only exposes the owner's current status, share link, editable verification details, and verifier strength list.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_community_verification_center' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList

Verification status, share URL, editable user details, and verifier rows.
GET

/v1/user/get_details

#
Returns details of the acting API User
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_details' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList

User details
GET

/v1/user/get_evaluate_permission

#
Returns the current value of the requested permission

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
permissionName string Gerekli Name of Permission
userAlias string İsteğe Bağlı (empty string) Alias of user that the permission should be evaluated for. Note: AccessSpecialFunctions permission is required to check other users permissions.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_evaluate_permission' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'permissionName={{permissionName}}' \
  --data-urlencode 'userAlias={{userAlias}}'

Dönüşler

string

Returns a successful response of evaluation result if permission is not false, errors if user does not have the permission
GET

/v1/user/get_profile

#
Returns a public profile payload for a user, suitable for rendering a profile screen or sharing externally. The response is viewer-aware: sensitive metrics (chargeback rate, vendor balances, U2U transfers, ...) are only included when the calling API user has the AccessSpecialFunctions permission. Anonymous callers receive the public subset. Public-by-design: profile pages are public unless the owner has set a visibility threshold; privatesensitive fields are gated before they are added to the response.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Public alias of the user to view.
includeAdditionalStats bool İsteğe Bağlı true Include the expanded, non-hero metrics in the profile payload. V2 web profiles set this to false and lazy-load them.
includeMedalTracks bool İsteğe Bağlı false Include self-only published medal track progress in the viewer payload.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_profile' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=eternalant36' \
  --data-urlencode 'includeAdditionalStats=false' \
  --data-urlencode 'includeMedalTracks=false'

Dönüşler

NestedKeyValueList

Structured payload with identity, Inner Circle members, sales-history, seller venue highlights, badges, viewer flags, hero stats, optional additional stats, action flags, and a recent-posts pointer.
GET

/v1/user/get_profile_about_post_candidates

#
Finds public community posts that can be selected as the current user's profileAbout Me post.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) Search text for public top-level posts with image media by title, body, or author alias.
postID int İsteğe Bağlı 0 Exact ATDiscussionPosts.ID to preview. Exact lookup may target any public post or reply with enough image media.
pageSize int İsteğe Bağlı 8 Maximum candidates to return for text search.
ownPostsOnly bool İsteğe Bağlı false When true, only return public image-media posts authored by the current API user.
includeMediaLessOwnedPosts bool İsteğe Bağlı false When true, include current-user posts even before image media has been attached.
minimumImageMediaCount int İsteğe Bağlı 1 Minimum attached image-media items required.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_profile_about_post_candidates' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter=great seller' \
  --data-urlencode 'postID=1436696' \
  --data-urlencode 'pageSize=8' \
  --data-urlencode 'ownPostsOnly=false' \
  --data-urlencode 'includeMediaLessOwnedPosts=false' \
  --data-urlencode 'minimumImageMediaCount=2'

Dönüşler

NestedKeyValueList

{ Candidates: [{ id, title, bodyPreview, url, author, board, imageMediaCount, media }], Page: { pageSize } }
GET

/v1/user/get_profile_about_post_profiles

#
Returns the public profiles currently using a community post as their profileAbout Me post. Public-by-design: the newsfeed already exposes the aggregate profile-use count on public post cards. This endpoint only returns profiles the current viewer is allowed to open under the profile visibility settings.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postID int İsteğe Bağlı 0 Public ATDiscussionPosts.ID shown in the newsfeed.
limit int İsteğe Bağlı 50 Maximum profiles to return, capped at 100.
offset int İsteğe Bağlı 0 Paging offset for the profile list.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_profile_about_post_profiles' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postID=1436696' \
  --data-urlencode 'limit=50' \
  --data-urlencode 'offset={{offset}}'

Dönüşler

NestedKeyValueList

{ PostID, TotalCount, VisibleCount, HiddenCount, Profiles: [{ userID, alias, avatar, profileUrl, importancePoints }], Page: { limit, offset, hasMore } }
GET

/v1/user/get_profile_additional_metrics

#
Returns the expanded, non-hero metrics for a profile. Public-by-design: this mirrors the public profile metric rules unless the owner has set a visibility threshold. Sensitive metrics remain gated by the existing AccessSpecialFunctions checks inside LoadProfileContent.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Public alias of the user to view.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_profile_additional_metrics' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=eternalant36'

Dönüşler

NestedKeyValueList

Payload with count and metrics[] entries shaped like get_profile.additionalStats.
GET

/v1/user/get_profile_sales_history

#
Returns v2 profile sales history scoped for the acting viewer. AccessSpecialFunctions users see all buyerseller trades for the target user. Normal users see only trades where they were the counterparty, or all of their own trades when inspecting their own profile.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of the profile user to inspect. [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
pageSize int İsteğe Bağlı 50 Maximum rows to return.
pageNumber int İsteğe Bağlı 0 Zero-based page number.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_profile_sales_history' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=ColorfulRod45' \
  --data-urlencode 'pageSize=50' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

Profile-friendly sales history rows and summary.
GET

/v1/user/get_profile_setup

#
Returns the acting user's reusable v2 profile setup onboarding payload.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
includeRenderedFragments bool İsteğe Bağlı false Include server-rendered fragments needed by lazy UI embeds.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_profile_setup' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'includeRenderedFragments=false'

Dönüşler

NestedKeyValueList

Current profile setup state, suggestions, seller in-list data, and verification link details.
GET

/v1/user/get_profile_setup_city_options

#
Searches city homebase options for the reusable profile setup insert.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
q string İsteğe Bağlı (empty string) City search text.
pageSize int İsteğe Bağlı 10 Maximum options to return.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_profile_setup_city_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'q=new york' \
  --data-urlencode 'pageSize=10'

Dönüşler

NestedKeyValueList

City options.
GET

/v1/user/get_profile_setup_status

#
Returns the acting user's lightweight v2 profile setup status. This intentionally skips display context such as suggested users, communities, seller venue stats, verifier lists, and venue detail cards.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_profile_setup_status' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList

Current setup completion status and lazy hydration endpoints.
GET

/v1/user/get_profile_visibility_preview

#
Previews which public medalusergroup tiers can see a profile at a given importance-points threshold, including the highest-ranked verified users by total importance points.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
profileVisibleImportancePointsThreshold int İsteğe Bağlı 0 Minimum total importance points required.
limitPerGroup int İsteğe Bağlı 20 Maximum ranked verified users returned.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_profile_visibility_preview' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'profileVisibleImportancePointsThreshold=250000' \
  --data-urlencode 'limitPerGroup=20'

Dönüşler

NestedKeyValueList

{ threshold, maxThreshold, isAny, totalVisibleUserCount, topUsers[], groups[] }
GET

/v1/user/get_profile_visitors

#
Returns signed-in visitors for a profile. Auth: the profile owner needs Permission::SeeProfileInsights to see their own visitor identities. Administrators with Permission::AccessSpecialFunctions can inspect other profiles. Anonymous or IP-only profile views are counted in the aggregate but are never exposed here.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Public alias of the profile owner.
start int İsteğe Bağlı 0 Result offset for pagination.
pageLength int İsteğe Bağlı 50 Maximum visitors to return, capped at 100.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_profile_visitors' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=eternalant36' \
  --data-urlencode 'start={{start}}' \
  --data-urlencode 'pageLength=50'

Dönüşler

NestedKeyValueList

Payload with visitors[], totalCount, pagination fields, and hasMore.
GET

/v1/user/get_relationship_block_list

#
Returns users blocked by the current viewer.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
limit int İsteğe Bağlı 100 Maximum users to return, capped at 200.
offset int İsteğe Bağlı 0 Pagination offset.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_relationship_block_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'limit=100' \
  --data-urlencode 'offset={{offset}}'

Dönüşler

NestedKeyValueList

{ BlockedUsers: [{ UserID, Alias, Avatar, BlockedDate, Reason }], Page: { Limit, Offset, HasMore } }
GET

/v1/user/get_relationship_controls

#
Returns the current viewer's blockmute controls for a target user.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of the target user.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_relationship_controls' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=eternalant36'

Dönüşler

NestedKeyValueList

{ actorUserID, targetUserID, isBlocked, blockedDate, isMuted, mutedDate, reason, personalNote }
GET

/v1/user/get_transaction_history

#
Returns transaction history for the user

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string İsteğe Bağlı (empty string) Alias of user to return transaction history for
Note: Only administrators are able to access other users transaction history details other than transactions that they have facilitated with each other
[clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
peerUserAlias string İsteğe Bağlı (empty string) Alias of user that was transacted with (e.g. the Seller Alias in case user wants to find the buyer history or Buyer Alias in the seller history) [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
locationAlias string İsteğe Bağlı (empty string) Slug found after the slash when opening a location in the portal
returnCreatedAppointmentTransactionsOnly bool İsteğe Bağlı false Defines if only sales that were also created by the user are returned. The AT Trackrecord is calculated based on this parameter being true
transactionType string İsteğe Bağlı SELLER Transaction Type - Can be 'SELLER' or 'BUYER'
status string İsteğe Bağlı COMPLETED Transaction State. Can be COMPLETED, PENDING or CANCELLED
dateTimeRangeStart string İsteğe Bağlı (empty string) Time Range Start Date, will be ignored if empty format: YYYY-MM-DD HH:MM:SS
dateTimeRangeEnd string İsteğe Bağlı (empty string) Time Range End Date, will be ignored if empty format: YYYY-MM-DD HH:MM:SS
pageSize int İsteğe Bağlı 200 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_transaction_history' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=ColorfulRod45' \
  --data-urlencode 'peerUserAlias=ColorfulRod45' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'returnCreatedAppointmentTransactionsOnly= true' \
  --data-urlencode 'transactionType= SELLER' \
  --data-urlencode 'status= COMPLETED' \
  --data-urlencode 'dateTimeRangeStart=2022-08-01 00:00:00' \
  --data-urlencode 'dateTimeRangeEnd=2026-06-25 06:57:13' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing the appropriate transaction history
GET

/v1/user/get_user_to_user_chat_tag_id

#
Returns the chat id for the user-to-user chat

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli useralias
dateTimeExpiry string İsteğe Bağlı (empty string) Expire time of the chat, will be ignored if empty format: YYYY-MM-DD HH:MM:SS
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_user_to_user_chat_tag_id' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias={{userAlias}}' \
  --data-urlencode 'dateTimeExpiry=2022-08-01 00:00:00'

Dönüşler

string

messageTagID of the user chat, will return an error if chat can not be initiated due to the user being blocked or not permitted to doing so.
GET

/v1/user/get_usergroup_memberships

#
Returns medal and usergroup memberships for an inspected user.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of the user to inspect.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_usergroup_memberships' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=ColorfulRod45'

Dönüşler

NestedKeyValueList

Usergroups and medals currently linked to the user.
GET

/v1/user/get_verification_invite

#
Returns the public invite payload for a verify{uuid} community verification link. Public-by-design: possession of the verification UUID is the invite authorization. This endpoint exposes only the target identity details already shown to anyone opening the invite and the acting viewer's ability to cast a verification vote.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
uuid string Gerekli Verification UUID from verify{uuid}.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/user/get_verification_invite' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'uuid={{uuid}}'

Dönüşler

NestedKeyValueList

Target identity, viewer state, invite URL, and marketplace impact stats.
POST

/v1/user/set_avatar

#
Sets the user's avatar (an emoji). Replaces the legacy modulescommunitychangeprofile.php flow with a v2-friendly apiv1 surface that the v2 user-profile "MY ACCOUNT" panel can call directly. The v1 page stays in place as the non-v2 fallback. Reuses \AT\User::SetUserAvatar(), which already strips non-emoji characters and writes only when a single grapheme remains -- we do not re-implement that validation here.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
avatar string Gerekli Avatar value (typically a single emoji). Non-emoji characters are stripped server-side.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to true once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_avatar' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'avatar={{avatar}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if successful
POST

/v1/user/set_bid_user_to_user_chat_request

#
Starts or reopens a bid customer chat after checking bid chat availability. Preserves the legacy customer-chat rule: the viewer must be the buyer or current holder of the bid, the target must be the bid counterparty, and the direct user-to-user chat must be available for that pair.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of the bid counterparty to message.
bidID int İsteğe Bağlı 0 Bid ID that grants the temporary customer-chat relationship.
isWritingRequest bool İsteğe Bağlı false Required true to create or reopen the chat.
changeProposalNote string İsteğe Bağlı (empty string) Optional seller note explaining the proposal.
changeProposalLocationAlias string İsteğe Bağlı (empty string) Seller-proposed alternate venue alias.
changeProposalStartDateTime string İsteğe Bağlı (empty string) Seller-proposed alternate start datetime.
changeProposalInventoryTypeID int İsteğe Bağlı 0 Seller-proposed inventory type ID for the proposed venue.
changeProposalVenue string İsteğe Bağlı (empty string) Deprecated free-text proposal venue; structured proposal fields are required.
changeProposalTime string İsteğe Bağlı (empty string) Deprecated free-text proposal time; structured proposal fields are required.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_bid_user_to_user_chat_request' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=eternalant36' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'isWritingRequest=false' \
  --data-urlencode 'changeProposalNote=I can confirm this nearby opening instead.' \
  --data-urlencode 'changeProposalLocationAlias=carbone-miami' \
  --data-urlencode 'changeProposalStartDateTime=2026-06-21 20:30:00' \
  --data-urlencode 'changeProposalInventoryTypeID=123' \
  --data-urlencode 'changeProposalVenue={{changeProposalVenue}}' \
  --data-urlencode 'changeProposalTime={{changeProposalTime}}'

Dönüşler

NestedKeyValueList

{ ChatID, Name, EncodedTag, Url, ChatUrl, UserToUser, ChangeProposalSent }
POST

/v1/user/set_community_verifiable_details

#
Sets the users community verifable details, each change will reset all community verifications

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
firstName string Gerekli First Name of the User
lastName string Gerekli Last Name of the User
profession string Gerekli Profession of the user
privacySetting string İsteğe Bağlı do_not_publicly_share Values can be: do_not_publicly_share, share_name, share_profession, share_name_and_profession
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_community_verifiable_details' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'firstName={{firstName}}' \
  --data-urlencode 'lastName={{lastName}}' \
  --data-urlencode 'profession={{profession}}' \
  --data-urlencode 'privacySetting={{privacySetting}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if sucessful
POST

/v1/user/set_delete

#
Deletes the requesting user after email-code confirmation. The confirmation code must be requested through userset_request_delete_code and must match the code sent to the email address on file. Deletion is blocked when any active non-corporate user account has a negative currency balance.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
confirmationUserAlias string Gerekli This needs to be the UserAlias from the requesting user to avoid accidental deletion
confirmationCode string Gerekli The four digit code sent to the email address on file
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to true once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_delete' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'confirmationUserAlias=YourUserhandle12' \
  --data-urlencode 'confirmationCode=1234' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if user was successfully deleted
POST

/v1/user/set_grant_access

#
Give another user access to this account

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of user who shall be granted access to [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
sessionLifeTimeSeconds int İsteğe Bağlı 3600 Defines how long access will be granted to userAlias for [clientFieldConfiguration:{"Type":"DropDown", "Callback":"/v1/user/get_alternative_session_lifetime_presets", "ListConfiguration":{"value":"sessionLifeTimeSeconds", "title":"description", "defaultOptionMessage":"How Long Should This User Have Access?"}}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_grant_access' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=ColorfulRod45' \
  --data-urlencode 'sessionLifeTimeSeconds={{sessionLifeTimeSeconds}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if user was successfully given access to the api users account, return the variable grantedToUserAlias containing the granted to user alias
POST

/v1/user/set_initiate_suspension

#
Initiates the user suspension process

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of user who shall be suspended [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_initiate_suspension' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=ColorfulRod45' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

string

returns the url to the user suspension chat if successful
POST

/v1/user/set_permission_default_payload

#
Sets the default payload for one permission.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
permissionID int İsteğe Bağlı 0 Internal permission id.
permissionName string İsteğe Bağlı (empty string) Permission name.
settingPayload string İsteğe Bağlı false Default payload value. Values can be true, false, a number, JSON, or any existing permission payload string.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_permission_default_payload' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'permissionID=1' \
  --data-urlencode 'permissionName=ApproveAppointments' \
  --data-urlencode 'settingPayload=true' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Saved permission default payload details.
POST

/v1/user/set_permission_override

#
Sets or clears a direct permission override for one user.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of the user whose direct override should be changed. [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
permissionID int İsteğe Bağlı 0 Internal permission id.
permissionName string İsteğe Bağlı (empty string) Permission name.
settingPayload string İsteğe Bağlı false Payload value. Values can be true, false, a number, JSON, or any existing permission payload string.
expireTime string İsteğe Bağlı (empty string) Optional expiration datetime. Leave blank for no expiration.
comment string İsteğe Bağlı (empty string) Optional administrative note.
clearOverride bool İsteğe Bağlı false Clear the direct user override instead of setting a payload.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_permission_override' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=ColorfulRod45' \
  --data-urlencode 'permissionID=1' \
  --data-urlencode 'permissionName=ApproveAppointments' \
  --data-urlencode 'settingPayload=true' \
  --data-urlencode 'expireTime=2026-12-31 23:59:59' \
  --data-urlencode 'comment=Temporary review access' \
  --data-urlencode 'clearOverride=false' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Saved permission override details.
POST

/v1/user/set_profile_about_post

#
Sets or clears the current user's profileAbout Me community post and optional image selections from that post's attached media.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
postID int İsteğe Bağlı 0 Public ATDiscussionPosts.ID with at least two attached images to use as the profile post. Pass 0 to clear.
profileImageMediaID int İsteğe Bağlı 0 Attached image ATMedia.ID to use as the profile picture. Pass 0 for emoji-only fallback.
bannerImageMediaID int İsteğe Bağlı 0 Attached image ATMedia.ID to use as the profile banner. Pass 0 for no banner.
profileImagePositionXPercent int İsteğe Bağlı 50 Profile image horizontal framing position, 0-100.
profileImagePositionYPercent int İsteğe Bağlı 50 Profile image vertical framing position, 0-100.
profileImageZoomPercent int İsteğe Bağlı 100 Profile image zoom percentage, 100-300.
bannerImagePositionXPercent int İsteğe Bağlı 50 Banner image horizontal framing position, 0-100.
bannerImagePositionYPercent int İsteğe Bağlı 50 Banner image vertical framing position, 0-100.
bannerImageZoomPercent int İsteğe Bağlı 100 Banner image zoom percentage, 100-300.
updatePostTitle int İsteğe Bağlı 0 Pass 1 to update the selected post title when saving the profile intro.
postTitle string İsteğe Bağlı (empty string) Replacement selected-post title. Only the post author can change it.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to true once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_profile_about_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'postID=1436696' \
  --data-urlencode 'profileImageMediaID={{profileImageMediaID}}' \
  --data-urlencode 'bannerImageMediaID={{bannerImageMediaID}}' \
  --data-urlencode 'profileImagePositionXPercent=50' \
  --data-urlencode 'profileImagePositionYPercent=50' \
  --data-urlencode 'profileImageZoomPercent=100' \
  --data-urlencode 'bannerImagePositionXPercent=50' \
  --data-urlencode 'bannerImagePositionYPercent=50' \
  --data-urlencode 'bannerImageZoomPercent=100' \
  --data-urlencode 'updatePostTitle={{updatePostTitle}}' \
  --data-urlencode 'postTitle=About me' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Saved profile postmedia selection.
POST

/v1/user/set_profile_chat_settings

#
Updates whether the current user's profile accepts new low-friction chat requests. Existing marketplace-required chats and transactionsupport chats are not disabled by this setting.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
allowChatRequests bool İsteğe Bağlı true True to allow new profile chat requests.
isWritingRequest bool İsteğe Bağlı false Required true to save.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_profile_chat_settings' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'allowChatRequests=true' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ allowChatRequests }
POST

/v1/user/set_profile_homebase

#
Saves the acting user's profile setup homebase city.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
citySlug string İsteğe Bağlı (empty string) ATAirport MunicipalitySlug to save.
isWritingRequest bool İsteğe Bağlı false Required true to save.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_profile_homebase' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'citySlug=new-york' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Saved homebase and refreshed profile setup state.
POST

/v1/user/set_profile_intent

#
Updates the current user's profile intent.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
profileIntent string İsteğe Bağlı sell One of buy, sell, socialize, or location-partner.
isWritingRequest bool İsteğe Bağlı false Required true to save.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_profile_intent' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'profileIntent=location-partner' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Saved profile intent flags and refreshed profile setup state.
POST

/v1/user/set_profile_setup_follows

#
Follows or unfollows profile setup users, boards, and locations, including boards derived from seller in-list venues when following.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
profileIntent string İsteğe Bağlı (empty string) Current setup intent.
userAliases string İsteğe Bağlı (empty string) Comma separated user aliases to follow.
boardIDs string İsteğe Bağlı (empty string) Comma separated board ids to follow.
locationIDs string İsteğe Bağlı (empty string) Optional seller in-list venue ids for derived board follows.
followLocationIDs string İsteğe Bağlı (empty string) Comma separated location ids whose community posts should be followed.
action string İsteğe Bağlı follow Either follow or unfollow.
isWritingRequest bool İsteğe Bağlı false Required true to save.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_profile_setup_follows' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'profileIntent=sell' \
  --data-urlencode 'userAliases=ColorfulRod45' \
  --data-urlencode 'boardIDs=1,2' \
  --data-urlencode 'locationIDs=1,2' \
  --data-urlencode 'followLocationIDs=1,2' \
  --data-urlencode 'action=follow' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Follow counts and refreshed profile setup state.
POST

/v1/user/set_profile_visibility

#
Updates the current user's profile visibility threshold. The threshold is based on a viewer's cached total importance points. A threshold of 0 means "Any" and keeps the profile visible to everyone.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
profileVisibleImportancePointsThreshold int İsteğe Bağlı 0 Minimum total importance points required to see the profile.
profileVisibilityMode string İsteğe Bağlı public One of public, rich_lock, or full_lock.
isWritingRequest bool İsteğe Bağlı false Required true to save.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_profile_visibility' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'profileVisibleImportancePointsThreshold=250000' \
  --data-urlencode 'profileVisibilityMode=public' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Saved visibility settings plus the current audience preview.
POST

/v1/user/set_referred_user

#
Link a user to be a referred

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of user who shall be set as the referring user [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
referredUserAlias string Gerekli Alias of user that has been referred. [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_referred_user' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=ColorfulRod45' \
  --data-urlencode 'referredUserAlias=ColorfulRod45' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if user was successfully linked
POST

/v1/user/set_reinstate

#
Reinstate user privileges

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of user who shall be reinstated [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
reason string Gerekli Reason why the user account is being reinstated
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_reinstate' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=ColorfulRod45' \
  --data-urlencode 'reason={{reason}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if succesful
POST

/v1/user/set_relationship_block

#
Blocks or unblocks a user for optional user-to-user contact.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of the user to block or unblock.
blocked bool İsteğe Bağlı true True to block, false to unblock.
reason string İsteğe Bağlı (empty string) Optional private reason.
isWritingRequest bool İsteğe Bağlı false Required true to save.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_relationship_block' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=eternalant36' \
  --data-urlencode 'blocked=true' \
  --data-urlencode 'reason={{reason}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

relationship controls after the change.
POST

/v1/user/set_relationship_mute

#
Mutes or unmutes a user for viewer-side chat urgency.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of the user to mute or unmute.
muted bool İsteğe Bağlı true True to mute, false to unmute.
reason string İsteğe Bağlı (empty string) Optional private reason.
isWritingRequest bool İsteğe Bağlı false Required true to save.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_relationship_mute' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=eternalant36' \
  --data-urlencode 'muted=true' \
  --data-urlencode 'reason={{reason}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

relationship controls after the change.
POST

/v1/user/set_relationship_note

#
Saves or clears the current viewer's private note about a target user. The note is private to the current viewer and is not shown to the target user.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of the target user.
personalNote string İsteğe Bağlı (empty string) Short private note. Empty clears the note.
isWritingRequest bool İsteğe Bağlı false Required true to save.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_relationship_note' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=eternalant36' \
  --data-urlencode 'personalNote=this is marc' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ actorUserID, targetUserID, isBlocked, blockedDate, isMuted, mutedDate, reason, personalNote }
POST

/v1/user/set_request_delete_code

#
Sends an account deletion confirmation code to the email address on file. The code is stored in the existing ATUser.AuthCode fields with AuthCodeOrigin set to DeleteUser, and expires after 15 minutes.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to true once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_request_delete_code' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Payload containing the masked email address that received the code
POST

/v1/user/set_revoke_alternative_access

#
Revoke another user's access to this account.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of user whose access to this account should be revoked [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_revoke_alternative_access' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=ColorfulRod45' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if the user's access to the api user's account was revoked
POST

/v1/user/set_user_to_user_chat_decision

#
Accepts or denies a pending user-to-user profile chat request.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatID int İsteğe Bağlı 0 ATNotificationIntelligentTags.ID for the chat.
decision string İsteğe Bağlı accept Either accept or deny.
isWritingRequest bool İsteğe Bağlı false Required true to save the decision.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_user_to_user_chat_decision' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'decision=accept' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ChatID, UserToUser }
POST

/v1/user/set_user_to_user_chat_request

#
Starts or reopens a user-to-user profile chat request. If the existing marketplace chat permission already allows the pair, the chat is immediately sendable. Otherwise the target user receives an in-chat request decision and the requester may send one opening message.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias of the profile user to message.
dateTimeExpiry string İsteğe Bağlı (empty string) Optional chat expiration datetime.
isWritingRequest bool İsteğe Bağlı false Required true to create or reopen the chat.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_user_to_user_chat_request' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=eternalant36' \
  --data-urlencode 'dateTimeExpiry={{dateTimeExpiry}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ChatID, Name, EncodedTag, Url, ChatUrl, UserToUser }
POST

/v1/user/set_verify

#
Verifies another user

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
toBeVerifiedUserAlias string Gerekli Alias of user to be verified.
isPositiveVerification bool İsteğe Bağlı true defines whether the user has been verified or not
verificationMessage string İsteğe Bağlı (empty string) Description of confirmation
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/user/set_verify' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'toBeVerifiedUserAlias={{toBeVerifiedUserAlias}}' \
  --data-urlencode 'isPositiveVerification={{isPositiveVerification}}' \
  --data-urlencode 'verificationMessage={{verificationMessage}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if sucessful, error if user has already verified the user.

/v1/marketdata/

Contains all market data related functions to allow sellers to pick up on trends throughout the year

GET

/v1/marketdata/get_city_hot_list

#
Returns the most-traded venues in a given city, with rank-change deltas. Powers the per-city Hot List page at market-data.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
citySlug string Gerekli CloseByCitySlug (e.g. los-angeles, new-york).
pageSize int İsteğe Bağlı 20 Venues per page (1-50).
pageNumber int İsteğe Bağlı 0 Zero-based page number.
categorySlug string İsteğe Bağlı (empty string) Optional category filter.
dateRange string İsteğe Bağlı 90d Activity window.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_city_hot_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'citySlug=los-angeles' \
  --data-urlencode 'pageSize=20' \
  --data-urlencode 'pageNumber={{pageNumber}}' \
  --data-urlencode 'categorySlug={{categorySlug}}' \
  --data-urlencode 'dateRange=90d'

Dönüşler

KeyValueList

Returns 'city' (cityName, citySlug, isRestrictedMarket, showRevenueMetrics, recentActivity) plus 'venues' (array of venue rows: rank, priorRank, rankDelta30Day, name, locationAlias, categorySlug, categoryDescriptor, addressString, coordinates, rating, ratingCount, communityContext, communitySnippet, imageURL256, imageURL512, optional ugcImageURL256ugcImageURL512, safe visualDisplayImageURL256visualDisplayImageURL512, visualDisplayImageSource, userTrades, recentViews, avgPrice, profileURL, addedByUserAlias, addedYearMonth, mentionURL, isRestrictedByRegulation). Revenue metrics are null when showRevenueMetrics is false.
GET

/v1/marketdata/get_continent_country_top

#
Returns the top cities of an editorial continent, grouped by country. Editorial continents are: NA (North America incl. CanadaMexico), EU (Europe), AS (Asia, excluding Middle East), MEA (Middle East & Africa), SA (South America), OC (Oceania).

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
continent string Gerekli Editorial continent code: NA, EU, AS, MEA, SA, OC.
pageSize int İsteğe Bağlı 100 Number of cities (1-100).
categorySlug string İsteğe Bağlı (empty string) Optional category filter.
dateRange string İsteğe Bağlı 90d Activity window.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_continent_country_top' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'continent=NA' \
  --data-urlencode 'pageSize=100' \
  --data-urlencode 'categorySlug={{categorySlug}}' \
  --data-urlencode 'dateRange=90d'

Dönüşler

KeyValueList

Returns 'continent', 'countries' (array of {countryCode, countryName, cities:[...]}). Cities are in the same shape as get_world_top, ranked within the continent.
GET

/v1/marketdata/get_highest_converting_locations

#
Returns the best converting venues, indicating the most demand for listings

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
pageSize int İsteğe Bağlı 25 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_highest_converting_locations' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList
GET

/v1/marketdata/get_map_points

#
Returns signed-in Market Data map points for overview and city Hot List map panels.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
scope string İsteğe Bağlı overview overview or city.
citySlug string İsteğe Bağlı (empty string) CloseByCitySlug when scope=city.
west float İsteğe Bağlı -180 Viewport west longitude.
south float İsteğe Bağlı -85 Viewport south latitude.
east float İsteğe Bağlı 180 Viewport east longitude.
north float İsteğe Bağlı 85 Viewport north latitude.
zoom int İsteğe Bağlı 2 Current map zoom. Below 6 returns city points; 6 and above returns location points.
pageSize int İsteğe Bağlı 200 Number of points to return (1-300).
categorySlug string İsteğe Bağlı (empty string) Optional category filter.
dateRange string İsteğe Bağlı 90d Activity window: 7d, 30d, 90d, 180d, 365d.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_map_points' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'scope=overview' \
  --data-urlencode 'citySlug=los-angeles' \
  --data-urlencode 'west=-125' \
  --data-urlencode 'south=24' \
  --data-urlencode 'east=-66' \
  --data-urlencode 'north=50' \
  --data-urlencode 'zoom=5' \
  --data-urlencode 'pageSize=200' \
  --data-urlencode 'categorySlug={{categorySlug}}' \
  --data-urlencode 'dateRange=90d'

Dönüşler

KeyValueList

Returns mode, cities, locations, viewport, categorySlug, and dateRange. Location rows include safe visual display image URLs and visual fallback fields for restricted markets.
GET

/v1/marketdata/get_most_bids_least_asks

#
Returns locations with the highest bids vs listing ratio

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
pageSize int İsteğe Bağlı 25 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_most_bids_least_asks' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList
GET

/v1/marketdata/get_most_underserved_locations

#
Returns locations with the most bids and the least number of listings in the past 30 days

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
pageSize int İsteğe Bağlı 25 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_most_underserved_locations' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList
GET

/v1/marketdata/get_most_viewed_locations_with_least_listings

#
Returns the most viewed locations with the least amount of listings

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
pageSize int İsteğe Bağlı 25 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_most_viewed_locations_with_least_listings' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList
GET

/v1/marketdata/get_recently_viewed

#
Returns signed-in caller-scoped recently viewed listings, marketplace locations, cities, communities, profiles, plus viewer-owned My Plans and active request tiles when available. Public-by-design: anonymous callers do not read sessionIP recently viewed history and receive the trending fallback instead. Signed-in callers receive only their own user-scoped history, caller-owned plan and pending-request summaries, and profile views recorded for that caller. It exposes no private history, plans, or requests for other users.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
pageSize int İsteğe Bağlı 12 Number of recently viewed items to return (1-20).
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_recently_viewed' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'pageSize=12'

Dönüşler

KeyValueList

Returns 'items' as mixed plansrequestslistinglocationcitycommunityprofile cards with type, id, title, subtitle, url, optional image URLs, optional UGC venue-about image URLs, optional safe visual display image URLs, visual fallback fields, optional pills, and last-view metadata. If the caller has no history, booked plans, or active requests, returns up to pageSize nearby trending city cards with source='trending_nearby' or source='trending_world'.
GET

/v1/marketdata/get_required_inventory_forecast

#
Returns inventory that may have high chance of selling based on historical data

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
dateRangeStart string Gerekli oldest date of metrics to be reported
Date format: YYYY-MM-DD
dateRangeEnd string Gerekli latest date of metrics to be reported
Date format: YYYY-MM-DD
additionalLocationAliasSourceList string İsteğe Bağlı (empty string) Comma separated List of other locations that should be used as a data source for the forecast, related locations can be found at /v1/location/get_related_location_list
maximumPrice int İsteğe Bağlı 0 Items to exclude based on price
desiredProfitBasisPoints int İsteğe Bağlı 10000 defines how much profit should be made per line item
pageSize int İsteğe Bağlı 1500 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_required_inventory_forecast' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'dateRangeStart=2026-07-12' \
  --data-urlencode 'dateRangeEnd=2026-07-31' \
  --data-urlencode 'additionalLocationAliasSourceList=4-charles-prime-rib-new-york, sw-steakhouse, the-polo-bar-new-york, torrisi-bar-restaurant-new-york, la-renomme-paris' \
  --data-urlencode 'maximumPrice={{maximumPrice}}' \
  --data-urlencode 'desiredProfitBasisPoints={{desiredProfitBasisPoints}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

Returns the timeslots that are likely needed based on historical data, if data is being combined from multiple locations the sourceDataLocationAliasList field will contain such venues. yearOverYearMarketPriceChange contains the local market price change year over year (e.g. 1.051 for 5.1% increase or 0.985 for a 1.5% decrease) lastYearsCorrespondingDayList explains which days were used as source comparable data for this event from last year
GET

/v1/marketdata/get_toplist

#
Returns locations with the most bids and the least number of listings in the past 30 days

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
cityCode string İsteğe Bağlı (empty string) The code of the City that is being queried If left empty worldwide results are being returned Exemplary Value: NYC
categorySlug string İsteğe Bağlı (empty string) The slug of the location category that is being requested. If left empty all categories are being returned. Exemplary Value: restaurants
pageSize int İsteğe Bağlı 25 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_toplist' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'cityCode={{cityCode}}' \
  --data-urlencode 'categorySlug={{categorySlug}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

Returns the requested toplist locations. GlobalATRankChangeData and LocalATRankChangeData is displayed as follows [1DAYCHANGE]|[7DAYCHANGE]|[30DAYCHANGE]|[3MOCHANGE]|[12MOCHANGE]
GET

/v1/marketdata/get_wall_of_fame

#
Returns all public Wall of Fame leaderboards for the requested scope and timeframe. Public-by-design: Wall of Fame cards expose public user aliases, avatars, selected public profilebanner images, profile links, ranks, transaction counts, and rounded amount labels only. Raw transaction and bonus amounts stay internal to the cached ranking helper.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
scopeType string İsteğe Bağlı global global, continent, or city.
scopeValue string İsteğe Bağlı (empty string) Continent code (NA, EU, AS, MEA, SA, OC) or airport-backed city slug when scopeType=city.
timeframe string İsteğe Bağlı today today, yesterday, month, ytd, year, or alltime.
year int İsteğe Bağlı 0 Calendar year used when timeframe=year.
pageSize int İsteğe Bağlı 10 Entries per board (1-25).
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_wall_of_fame' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'scopeType=global' \
  --data-urlencode 'scopeValue={{scopeValue}}' \
  --data-urlencode 'timeframe=today' \
  --data-urlencode 'year=2025' \
  --data-urlencode 'pageSize=10'

Dönüşler

NestedKeyValueList

Returns scope, timeframe, list metadata, and boards with public-ranked user entries.
GET

/v1/marketdata/get_wall_of_fame_list

#
Returns one public Wall of Fame leaderboard. Public-by-design: the response intentionally excludes exact raw cents and only emits rounded public amount labels plus public user identity fields and selected public profilebanner images.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listKey string İsteğe Bağlı highest_transaction highest_transaction, most_volume_purchased, most_volume_sold, largest_concierge_bonus, or most_generous_users.
scopeType string İsteğe Bağlı global global, continent, or city.
scopeValue string İsteğe Bağlı (empty string) Continent code or airport-backed city slug.
timeframe string İsteğe Bağlı today today, yesterday, month, ytd, year, or alltime.
year int İsteğe Bağlı 0 Calendar year used when timeframe=year.
pageSize int İsteğe Bağlı 10 Entries per board (1-25).
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_wall_of_fame_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listKey=most_volume_purchased' \
  --data-urlencode 'scopeType=city' \
  --data-urlencode 'scopeValue=los-angeles' \
  --data-urlencode 'timeframe=month' \
  --data-urlencode 'year=2025' \
  --data-urlencode 'pageSize=10'

Dönüşler

NestedKeyValueList

Returns scope, timeframe, list metadata, and ranked public user entries.
GET

/v1/marketdata/get_world_top

#
Returns the top cities worldwide ordered by recent trading activity. Used by the Market Data overview page's "World's Top N" header section.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
pageSize int İsteğe Bağlı 20 Number of cities to return (1-100).
categorySlug string İsteğe Bağlı (empty string) Optional category filter (restaurants, events, concerts, hotels, dmv, mentoring, shopping, golf, rv, marinas, cruises, houseparties, dj, concierges, general). Empty = all categories.
dateRange string İsteğe Bağlı 90d Activity window: 7d, 30d, 90d, 180d, 365d.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/marketdata/get_world_top' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'pageSize=20' \
  --data-urlencode 'categorySlug={{categorySlug}}' \
  --data-urlencode 'dateRange=90d'

Dönüşler

KeyValueList

Returns a payload with a 'cities' array. Each city has citySlug, cityName, stateShort, countryCode, countryName, continentShort, imageURL256, imageURL512, coordinates, tradingActivity30Day, numberTransactions, avgTradingPrice, venueCount and detailURL.

/v1/beta_program/

Beta Program invite-code endpoints. Auth: every endpoint requires an authenticated user ($_APIUserID > 0).

GET

/v1/beta_program/get_invite_commission_preview

#
Return the legacy invite-friends commission preview as structured data, using the authenticated user's current commission permissions.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/beta_program/get_invite_commission_preview' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList

Commission preview rows, formatted amounts, total, and user-status note.
GET

/v1/beta_program/get_invites

#
Return the authenticated user's beta invite summary, including remaining credits, return credits from redeemed codes, active unused codes, and redeemed codes with claimant details.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/beta_program/get_invites' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList

{ baseCredits, signupCredits, redeemedReturnCredits, issuedInviteCount, unusedInviteCount, redeemedCount, invitesLeft, invitesLeftLabel, sidebarLabel, activeCodes, redeemedCodes }
POST

/v1/beta_program/set_create_invite_code

#
Create one unused beta invite code if the authenticated user has invite credits remaining. Creating an unused code consumes one visible credit.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
isWritingRequest bool İsteğe Bağlı false Set true to actually create the invite code.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/beta_program/set_create_invite_code' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Updated invite summary. ExampleValuePHP:\AT\ATV2BetaProgram::GetEmptyInviteSummary()
POST

/v1/beta_program/set_revoke_invite_code

#
Revoke an unused beta invite code owned by the authenticated user. Revoking an unused code returns one visible invite credit.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
inviteCodeID int Gerekli Invite code ID from get_invites.
isWritingRequest bool İsteğe Bağlı false Set true to actually revoke the invite code.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/beta_program/set_revoke_invite_code' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'inviteCodeID=42' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Updated invite summary.
POST

/v1/beta_program/set_send_administration_invite_code

#
Create an admin-issued beta invite code for a logged-in beta interest row and notify the target user with the code. Requires AccessSpecialFunctions.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
interestID int Gerekli ATBetaProgramInterests row ID.
isWritingRequest bool İsteğe Bağlı false Set true to actually send the invite code.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/beta_program/set_send_administration_invite_code' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'interestID=17' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Created invite details and the operator's updated invite summary.

/v1/concierge/

Powers the v2 Intent Composer (templatesv2_composerintent.html) by
exposing the concierge-pipeline endpoints via the apiv1 surface.

Most methods here are thin passthroughs to legacy API...php endpoints
(or a single legacy library call). Pricing and seller-matching logic
stays owned by the legacy code path so modulesconcierge keeps working.

Exception: get_categorize_request was forked off the
APIcategorize_request.php logic in 2026-04 to add intent-aware,
checklist-driven multi-step parsing for buy sell socialize. The
legacy file still serves the v1 portal - we copied its behavior here so
we can rework the response shape without touching it. See
librariesconciergeintent_definitions.php for the per-intent step
config.

GET

/v1/concierge/get_available_listing_container

#
Returns the exact-match direct-listing container for the v2 composer. Public-by-design: read-only renderer for already-public listing availability; listing purchase and offer placement keep their existing authpayment gates.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Exact AT location alias.
date string Gerekli Requested date in YYYY-MM-DD.
timeframe string Gerekli Hour range like 18-20.
inventoryTypeID int Gerekli Inventory type id.
unitCount int İsteğe Bağlı 1 Number of time units.
cqe string İsteğe Bağlı (empty string) Base64-encoded original composer text.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_available_listing_container' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias={{locationAlias}}' \
  --data-urlencode 'date={{date}}' \
  --data-urlencode 'timeframe={{timeframe}}' \
  --data-urlencode 'inventoryTypeID={{inventoryTypeID}}' \
  --data-urlencode 'unitCount={{unitCount}}' \
  --data-urlencode 'cqe={{cqe}}'

Dönüşler

NestedKeyValueList

{ State, Payload: { html, javascript, uniqueId } }
GET

/v1/concierge/get_available_listings

#
Returns sanitized direct listings for the v2 composer buy flow.

Public-by-design: this mirrors the public get_offers availability surface for composer previews; checkout and purchase still run through the existing listing purchase flow.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
mode string İsteğe Bağlı city_preview city_preview, venue_preview, or exact.
cityGroupCode string İsteğe Bağlı (empty string) Airport-backed city group code for city_preview mode.
citySlug string İsteğe Bağlı (empty string) Municipality slug for city_preview mode when already known.
locationAlias string İsteğe Bağlı (empty string) Exact AT location alias for exact and venue_preview modes.
date string İsteğe Bağlı (empty string) Optional requested date in YYYY-MM-DD; city previews search future listings when blank.
timeframe string İsteğe Bağlı (empty string) Optional hour range like 18-20; city previews search all times when blank.
inventoryTypeID int İsteğe Bağlı 0 Optional inventory type id.
unitCount int İsteğe Bağlı 1 Number of time units.
limit int İsteğe Bağlı 6 Maximum listings to return.
source string İsteğe Bağlı (empty string) Optional view-tracking source emitted back in the payload; does not affect listing selection.
dateRangeStart string İsteğe Bağlı (empty string) Optional preview range start in YYYY-MM-DD; venuecity previews only.
dateRangeEnd string İsteğe Bağlı (empty string) Optional preview range end in YYYY-MM-DD; venuecity previews only.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_available_listings' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'mode={{mode}}' \
  --data-urlencode 'cityGroupCode={{cityGroupCode}}' \
  --data-urlencode 'citySlug={{citySlug}}' \
  --data-urlencode 'locationAlias={{locationAlias}}' \
  --data-urlencode 'date={{date}}' \
  --data-urlencode 'timeframe={{timeframe}}' \
  --data-urlencode 'inventoryTypeID={{inventoryTypeID}}' \
  --data-urlencode 'unitCount={{unitCount}}' \
  --data-urlencode 'limit={{limit}}' \
  --data-urlencode 'source={{source}}' \
  --data-urlencode 'dateRangeStart={{dateRangeStart}}' \
  --data-urlencode 'dateRangeEnd={{dateRangeEnd}}'

Dönüşler

NestedKeyValueList

{ State, scope, matchedExactly, source, items[] }
GET

/v1/concierge/get_bid_listing_container

#
Returns the reusable v2 listing composer mounted for a held bid fill.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidID int Gerekli Held bid id to fill.
sourceText string İsteğe Bağlı (empty string) Optional source text shown only as composer context.
privacyWarningJson string İsteğe Bağlı (empty string) Optional JSON privacy warning object.
presentationTheme string İsteğe Bağlı (empty string) Optional v2 theme key.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_bid_listing_container' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID=123' \
  --data-urlencode 'sourceText={{sourceText}}' \
  --data-urlencode 'privacyWarningJson={{privacyWarningJson}}' \
  --data-urlencode 'presentationTheme={{presentationTheme}}'

Dönüşler

NestedKeyValueList

{ State, Payload: { html, javascript, position, uiDescription, uniqueId } }
GET

/v1/concierge/get_buy_container

#
Returns the rich HTML + executable JS envelope for the v2 composer's
buy CTA. Thin wrapper over the legacy APIget_location_dialog.php
endpoint (ATAIChatComponents::GetBidContainer) - battle-tested across
many thousand transactions. Forwards the classifier's resolved
locationdatetimeinventoryType so the dialog renders pre-filled
with the user's actual request and the slider hot-zone reflects
comparable pricing for the right venue + slot.

Response shape mirrors the legacy endpoint:
{ State: "Success" | "Failed", Payload: { html, javascript, position, uiDescription, uniqueId } }

The composer injects Payload.html and programmatically appends a
script element with Payload.javascript (the apiv1 XHR client
strips inline script tags, so the JS is shipped as a string and
appended via document.createElement('script')).

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Resolved location alias from get_categorize_request.
date string Gerekli YYYY-MM-DD from get_categorize_request -> date.
timeframe string Gerekli HH-HH range from get_categorize_request -> timeframe.
inventoryType int Gerekli Inventory type id from get_categorize_request -> inventoryTypeID.
cqe string İsteğe Bağlı (empty string) Base64-encoded original textarea text - the dialog forwards this to the bid checkout via the cqe param so the user's exact phrasing rides through to post creation.
restrictBidToUserIds string İsteğe Bağlı (empty string) Optional comma-separated user ids for direct-hire bids (concierge picks a specific seller).
presentationTheme string İsteğe Bağlı (empty string) Optional v2 theme key.
atv2ComposerDraftInstanceKey string İsteğe Bağlı (empty string) Optional v2 composer instance id that should be cleared after successful bid checkout.
atv2ComposerDraftViewerKey string İsteğe Bağlı (empty string) Optional viewer-scoped composer draft key that should be cleared after successful bid checkout.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_buy_container' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias={{locationAlias}}' \
  --data-urlencode 'date={{date}}' \
  --data-urlencode 'timeframe={{timeframe}}' \
  --data-urlencode 'inventoryType={{inventoryType}}' \
  --data-urlencode 'cqe={{cqe}}' \
  --data-urlencode 'restrictBidToUserIds={{restrictBidToUserIds}}' \
  --data-urlencode 'presentationTheme={{presentationTheme}}' \
  --data-urlencode 'atv2ComposerDraftInstanceKey={{atv2ComposerDraftInstanceKey}}' \
  --data-urlencode 'atv2ComposerDraftViewerKey={{atv2ComposerDraftViewerKey}}'

Dönüşler

NestedKeyValueList

The legacy get_location_dialog response: { State, Payload: { html, javascript, position, uiDescription, uniqueId } }
GET

/v1/concierge/get_categorize_request

#
Parses a free-form composer request into a per-intent checklist state.
Drives the v2 composer's process-checklist UI: returns one entry per
step (Intent -> Where -> What -> When), each marked doneactivetodo
based on which underlying fields the LLM + post-processing could
resolve from the user's text.

Intent definitions live in librariesconciergeintent_definitions.php.
Buy and sell share the canonical 4-step flow; socialize routes
through a sub-type classifier (meetup share_seat companion)
before the main parse.

Stateless - the LLM re-extracts from the full $userRequest on every
keystroke. The frontend overlays the last-good state to avoid
flickering checkmarks while a new pass is in flight (smart-diff in
theme_assetsdefaultjsatv2-process-checklist.js).

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userRequest string Gerekli Free-form composer text.
intent string İsteğe Bağlı buy One of buy|sell|socialize. Editorial bypasses this endpoint entirely.
originLocationID string İsteğe Bağlı custom-concierge-request Origin location alias for analytics scoping.
socializeSubtype string İsteğe Bağlı (empty string) When intent=socialize, one of meetup|share_seat|companion. Empty string triggers auto-classification.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_categorize_request' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userRequest={{userRequest}}' \
  --data-urlencode 'intent={{intent}}' \
  --data-urlencode 'originLocationID={{originLocationID}}' \
  --data-urlencode 'socializeSubtype={{socializeSubtype}}'

Dönüşler

NestedKeyValueList

{ intent, subtype, resolved, dynamicFields, steps[], missing[], complete, followUpPrompt, SearchRequestID, plus backwards-compat fields locationAliaslocationIddateinventoryTypeIDinventoryTypeNametimeframe }
GET

/v1/concierge/get_classify_category

#
Classifies a composer request into one active marketplace category before
the details parser runs. This keeps category meaning AI-classified while
letting the later parser use a short, category-specific prompt.

Public-by-design: read-only composer category routing for logged-out parity. Follow-up bid, listing, and post writes remain on authenticated endpoints.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userRequest string Gerekli Free-form composer text.
intent string İsteğe Bağlı buy Current composer intent, usually buy|sell|socialize.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_classify_category' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userRequest={{userRequest}}' \
  --data-urlencode 'intent={{intent}}'

Dönüşler

NestedKeyValueList

{ CategorySlug, CategoryName, ParserProfile, CategoryConfidence, fallback?: bool }
GET

/v1/concierge/get_classify_intent

#
Classifies the high-level intent of a free-form composer string into one of eight buckets so the v2 Intent Composer can pick the right rich UI BEFORE firing the heavier get_categorize_request parse. Uses a thinfast model (gpt-4.1-mini) and returns {intent: "buy" | "sell" | "editorial" | "review" | "socialize" | "sharePlans" | "market_data" | "events"} plus optional postTarget for author-centered regular posts. The model prompt says "community_discussion" for the legacy internal "socialize" bucket so it is not confused with sharePlans.
Used by theme_assetsdefaultjsatv2-intent-composer.js to gate the buy-flow get_categorize_request call. Sell intent shows an "Attach Listing" affordance; editorial shows a discussion-post path; socialize shows a generic "Find local companions" path; sharePlans asks the user to attach one of their existing plans. When uncertain the classifier defaults to "buy" - never silently misroute toward marketplace semantics (see modulesv2_conversions_intent_first_direction.md section 4.1).

Public-by-design: read-only composer routing for logged-out searchcomposer parity. Follow-up bid, listing, and post writes remain on authenticated endpoints.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userRequest string Gerekli Free-form natural-language statement from the composer field.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_classify_intent' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userRequest={{userRequest}}'

Dönüşler

NestedKeyValueList

{intent: "buy"|"sell"|"editorial"|"review"|"socialize"|"sharePlans"|"market_data"|"events", postTarget?: "self_wall", matchedBoardID?: int, matchedBoardConfidence?: float, what?: string, scope?: "city"|"country"|"continent"|"world", reviewLocationText?: string, eventSearchText?: string, eventLocationText?: string, fallback?: bool}
GET

/v1/concierge/get_composer_board_options

#
Searches discussion boards available to the current viewer for the v2
Intent Composer board picker.

Public-by-design: read-only forum lookup for logged-out composer parity. Restricted forums are filtered by Community permission checks, and post creation remains authenticated.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchText string İsteğe Bağlı (empty string) Forum name, slug, or description search text.
intent string İsteğe Bağlı (empty string) Optional current composer intent. Ordinary forums without composer routing default to a regular discussion post.
cityGroupCode string İsteğe Bağlı (empty string) Optional airport-backed market code such as NYC or LAX.
limit int İsteğe Bağlı 12 Maximum number of options to return.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_composer_board_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchText={{searchText}}' \
  --data-urlencode 'intent={{intent}}' \
  --data-urlencode 'cityGroupCode={{cityGroupCode}}' \
  --data-urlencode 'limit={{limit}}'

Dönüşler

NestedKeyValueList

{ options: [{ boardID, slug, name, cityGroupCode, intent, callback, count, unitLabel, routingEnabled, routingDescription }] }
GET

/v1/concierge/get_comps

#
Returns comparable-pricing data (slider Hot Zone bounds, fill-probability buckets, recent-fill marquee HTML) for a parsed concierge request. Wraps APIGetComps.php. The composer reads MetaData.BidSliderData for slider minmaxvaluehotZone and DOMElements.MedianBidPriceTicker.innerHTML for the recent-fills marquee verbatim.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli AT location alias (from get_categorize_request -> locationAlias). The legacy endpoint takes the alias, not the numeric id.
inventoryTypeID int Gerekli Inventory-type id (from get_categorize_request -> inventoryTypeID).
date string Gerekli Date in YYYY-MM-DD (from get_categorize_request -> date).
timeframe string Gerekli Hour range "HH-HH" (from get_categorize_request -> timeframe).
unitCount int İsteğe Bağlı 1 Number of time units (default 1; the legacy concierge surface always passes 1).
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_comps' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias={{locationAlias}}' \
  --data-urlencode 'inventoryTypeID={{inventoryTypeID}}' \
  --data-urlencode 'date={{date}}' \
  --data-urlencode 'timeframe={{timeframe}}' \
  --data-urlencode 'unitCount={{unitCount}}'

Dönüşler

NestedKeyValueList

The full legacy GetComps response (State, DOMElements, MetaData with BidSliderData).
GET

/v1/concierge/get_copy_request_share

#
Returns the exact composer request text and whitelisted optional share state for a UUID-backed shared composer link. Public-by-design: possession of the opaque copy request UUID is the share credential; the response excludes row IDs, user IDs, sessions, parser payloads, and media.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
copyRequestFromHistroryUUID string İsteğe Bağlı (empty string) Misspelled URL parameter used by generated share links.
copyRequestFromHistoryUUID string İsteğe Bağlı (empty string) Correct spelling accepted for compatibility.
copyRequestUUID string İsteğe Bağlı (empty string) Internalshort alias for API callers.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_copy_request_share' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'copyRequestFromHistroryUUID={{copyRequestFromHistroryUUID}}' \
  --data-urlencode 'copyRequestFromHistoryUUID={{copyRequestFromHistoryUUID}}' \
  --data-urlencode 'copyRequestUUID={{copyRequestUUID}}'

Dönüşler

NestedKeyValueList

{ requestText, shareState }
GET

/v1/concierge/get_global_concierge_count

#
Returns the global count of available "fill-bid" concierges, used by the v2 Intent Composer's empty state ("{N} concierges waiting for requests"). Wraps the same library call modulesconciergeindex.php uses inline (\AT\ATLocation::GetNumberBidFillers).
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_global_concierge_count' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

int

The current global concierge-on-call count.
GET

/v1/concierge/get_intent_composer_result

#
Runs the full v2 Intent Composer parse pipeline in one request. This preserves the same modular stages as the granular endpoints, but calls them inside PHP so the browser avoids classify -> categorize ->
get_buy_container round trips.

Public-by-design: composer orchestration for logged-out parity. This may log ATLocationCustomSearchRequests analyticsconversion rows; bid placement and post creation still happen through authenticated follow-up actions.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userRequest string Gerekli Free-form composer text.
originLocationID string İsteğe Bağlı custom-concierge-request Origin location alias for analytics scoping.
socializeSubtype string İsteğe Bağlı (empty string) When intent=socialize, one of meetup|share_seat|companion. Empty string triggers auto-classification.
presentationTheme string İsteğe Bağlı (empty string) Optional v2 theme key.
composerId string İsteğe Bağlı (empty string) Optional composer instance id for conversion tracking.
customPHPSessionID string İsteğe Bağlı (empty string) Optional native-client session token. When empty, server session_id() is stored in PHPSessionID.
richUserRequest string İsteğe Bağlı (empty string) Optional serialized rich composer text used for durable postsearch-request body. Classifier logic still uses userRequest.
userSelectBoardID int İsteğe Bağlı 0 Optional ATDiscussionBoards.ID chosen by the user. When present, skips the initial route classifier and trusts the selected board's ComposerIntent.
communityOnly int İsteğe Bağlı 0 When 1, transactional buysellmarket-data routes are treated as editorial community posts.
sharePlanAppointmentID int İsteğe Bağlı 0 Optional owned upcoming ATAppointment.ID that anchors intent=sharePlans.
regularBoardPostOnly int İsteğe Bağlı 0 When 1 with a selected board, resolve the board as a plain community post target instead of running its intent-specific callback.
composerSessionID string İsteğe Bağlı (empty string) Optional 32-character composer session id shared with ATCommunitySearchLog.SearchSessionID.
atv2ComposerDraftInstanceKey string İsteğe Bağlı (empty string) Optional v2 composer instance id that should be cleared after successful bid checkout.
atv2ComposerDraftViewerKey string İsteğe Bağlı (empty string) Optional viewer-scoped composer draft key that should be cleared after successful bid checkout.
contextBoardID int İsteğe Bağlı 0 Optional page-provided default ATDiscussionBoards.ID. Unlike userSelectBoardID, this does not skip contextual forum matching.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_intent_composer_result' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userRequest={{userRequest}}' \
  --data-urlencode 'originLocationID={{originLocationID}}' \
  --data-urlencode 'socializeSubtype={{socializeSubtype}}' \
  --data-urlencode 'presentationTheme={{presentationTheme}}' \
  --data-urlencode 'composerId={{composerId}}' \
  --data-urlencode 'customPHPSessionID={{customPHPSessionID}}' \
  --data-urlencode 'richUserRequest={{richUserRequest}}' \
  --data-urlencode 'userSelectBoardID={{userSelectBoardID}}' \
  --data-urlencode 'communityOnly={{communityOnly}}' \
  --data-urlencode 'sharePlanAppointmentID={{sharePlanAppointmentID}}' \
  --data-urlencode 'regularBoardPostOnly={{regularBoardPostOnly}}' \
  --data-urlencode 'composerSessionID={{composerSessionID}}' \
  --data-urlencode 'atv2ComposerDraftInstanceKey={{atv2ComposerDraftInstanceKey}}' \
  --data-urlencode 'atv2ComposerDraftViewerKey={{atv2ComposerDraftViewerKey}}' \
  --data-urlencode 'contextBoardID={{contextBoardID}}'

Dönüşler

NestedKeyValueList

{ intent, classification, classificationPhase, selectedBoardID, selectedBoard, boardOptions, categorize, containerPayload, marketData, eventCategories, eventCandidates, plus categorize fields copied top-level when present. classificationPhase may be "board_matched" when a contextual forum match is accepted; classification may include postTarget="self_wall", matchedBoardSource="composer_board_routing", or boardRoutingOriginalIntent when the user's own wall is used as the final no-board fallback. }
GET

/v1/concierge/get_listing_container

#
Returns the rich HTML + executable JS envelope for the v2 composer's
sell CTA. The public composer text is routingcontext only; exact
listing details are collected in this structured container.

Public-by-design: read-only composer renderer for logged-out parity; media upload and listing creation still require an authenticated user with create-offer permission.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
sourceText string İsteğe Bağlı (empty string) Original composer text.
resolvedJson string İsteğe Bağlı (empty string) Optional JSON from get_categorize_request.resolved used only to prefill the first row.
privacyWarningJson string İsteğe Bağlı (empty string) Optional JSON privacy warning object from the parser.
presentationTheme string İsteğe Bağlı (empty string) Optional v2 theme key.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_listing_container' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'sourceText={{sourceText}}' \
  --data-urlencode 'resolvedJson={{resolvedJson}}' \
  --data-urlencode 'privacyWarningJson={{privacyWarningJson}}' \
  --data-urlencode 'presentationTheme={{presentationTheme}}'

Dönüşler

NestedKeyValueList

{ State, Payload: { html, javascript, position, uiDescription, uniqueId } }
GET

/v1/concierge/get_listing_edit_container

#
Returns the reusable v2 listing editor mounted for an off-market seller listing or rejected listing resubmit.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingID string Gerekli Unique listing ID that can be retrieved by /v1/listing/get_portfolio_listings
presentationTheme string İsteğe Bağlı (empty string) Optional v2 presentation theme key
resubmitRejectedListing bool İsteğe Bağlı false Set true when fixing a rejected listing and resubmitting it for review.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_listing_edit_container' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'presentationTheme=upscale_at' \
  --data-urlencode 'resubmitRejectedListing={{resubmitRejectedListing}}'

Dönüşler

NestedKeyValueList

{ State, Payload: { html, javascript, position, uiDescription, uniqueId } }
GET

/v1/concierge/get_listing_price_context

#
Returns sell-side price guidance for a listing draft.

Wraps the same legacy APIGetComps.php SellPageJS path used by
templatessellsell.html, then normalizes the DOM-oriented response for
the reusable v2 listing composer.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli AT location alias selected by the user.
inventoryTypeID int Gerekli Venue-specific inventory type id.
dateTime string Gerekli Exact listing datetime.
unitCount int İsteğe Bağlı 1 Number of units, usually 1.
appointmentDescriptor string İsteğe Bağlı (empty string) Optional descriptor such as Reservation, Ticket, Appointment.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_listing_price_context' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias={{locationAlias}}' \
  --data-urlencode 'inventoryTypeID={{inventoryTypeID}}' \
  --data-urlencode 'dateTime={{dateTime}}' \
  --data-urlencode 'unitCount={{unitCount}}' \
  --data-urlencode 'appointmentDescriptor={{appointmentDescriptor}}'

Dönüşler

NestedKeyValueList

{ highestBidPrice, averageSalePrice, suggestedPrice, pricePrefill, popularityBracket, comparableTickerHtml, standardTransferFeeBasisPoints, legacyTransferServiceFeeBasisPoints, defaultOfferAmount }
GET

/v1/concierge/get_localized_bidamount_and_fee

#
Returns the fee-inclusive bid amount, standardpremium fees, and legal disclaimer strings for a given bid amount + location. The displayed CTA copy ("Offer $171 to N concierges") uses BidAmountInclStandardFee 100, NOT the raw slider value. Wraps APIget_localized_bidamount_and_fee.php.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidAmountCents int Gerekli Bid amount in cents (1 dollar = 100). The legacy endpoint takes cents.
locationId int Gerekli AT location id.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_localized_bidamount_and_fee' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidAmountCents={{bidAmountCents}}' \
  --data-urlencode 'locationId={{locationId}}'

Dönüşler

NestedKeyValueList

The full legacy response (BidAmount, BidAmountInclStandardFee, BidAmountInclPremiumFee, StandardPublishingFee, PremiumPublishingFee, LocationDisclaimerMessageStandardFee, LocationDisclaimerMessagePremiumFee).
GET

/v1/concierge/get_location_options

#
Returns venuelocation options for reusable v2 composer selectors.

Public-by-design: read-only same-site venue lookup for logged-out composer parity. Listing and review persistence are handled by later authenticated write endpoints.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchText string Gerekli Venueplace text to search.
pageSize int İsteğe Bağlı 10 Maximum options to return.
includeRestrictedLocations bool İsteğe Bağlı false Include locations hidden from ordinary marketplace selectors by active regulation.
includeListableRestrictedLocations bool İsteğe Bağlı false Include regulated locations only when the current user can list at that managed venue.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_location_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchText={{searchText}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'includeRestrictedLocations={{includeRestrictedLocations}}' \
  --data-urlencode 'includeListableRestrictedLocations={{includeListableRestrictedLocations}}'

Dönüşler

NestedKeyValueList

{ options: [{ locationId:int, alias:string, name:string, subtitle:string, raw:KeyValueList }], totalResults:int }
GET

/v1/concierge/get_location_sellers

#
Returns the seller list, race-statement, and summary metrics ("Secured N times", "starts working in N seconds", "X concierges will race...") for a parsed concierge request at a specific bid amount. Wraps APIget_location_sellers.php. The SummaryStatement and UserStatement fields come back as pre-rendered HTML and are intended to be dropped into the composer's stat slots verbatim.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationId int Gerekli AT location id (from get_categorize_request -> locationId).
bidAmount int Gerekli Bid amount in dollars (the slider value, NOT cents).
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_location_sellers' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationId={{locationId}}' \
  --data-urlencode 'bidAmount={{bidAmount}}'

Dönüşler

NestedKeyValueList

The full legacy get_location_sellers JSON response (State, SellerListMetricsSummary, SummaryStatement, SellerList, UserStatement, ButtonLabelAppend).
GET

/v1/concierge/get_personalized_available_listings

#
Returns saved-city-market direct listings for the signed-in viewer's composer.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
limit int İsteğe Bağlı 6 Maximum listings to return.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_personalized_available_listings' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'limit={{limit}}'

Dönüşler

NestedKeyValueList

{ State, scope, sourceSignals[], count, hasListings, items[] }
GET

/v1/concierge/get_placeholder_examples

#
Returns entries for the v2 Intent Composer typewriter.

Public-by-design: the typewriter may be shown to logged-out viewers and
only returns user-authored example text.
When boardID is supplied, examples come from that exact readable public
board. Otherwise buy-intent examples use legacy bid-backed
CustomSearchRequests unless the ATV2 shell composer flag enables the
newer forum-post buy pool. Non-buy examples use top-level public posts
from readable forums.
No examples or synthetic forum names are generated here.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
intent string İsteğe Bağlı (empty string) Optional composer intent to restrict the pool.
boardID int İsteğe Bağlı 0 Optional preselected forum board ID. When present, only public posts from that board are returned.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_placeholder_examples' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'intent={{intent}}' \
  --data-urlencode 'boardID={{boardID}}'

Dönüşler

NestedKeyValueList

{ examples: [{ text:string, intent:string, board:{boardID, slug, name, cityGroupCode, intent, count, unitLabel}, author:{userID, alias, avatar, profileURL} }, ...] }
GET

/v1/concierge/get_review_location_options

#
Returns venuelocation options for the v2 Intent Composer review panel.

Public-by-design: read-only same-site venue lookup for logged-out composer parity. Review persistence is handled by a later authenticated write endpoint.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchText string Gerekli Venueplace text to search.
pageSize int İsteğe Bağlı 10 Maximum options to return.
includeRestrictedLocations bool İsteğe Bağlı false Include locations hidden from ordinary marketplace selectors by active regulation.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/concierge/get_review_location_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchText={{searchText}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'includeRestrictedLocations={{includeRestrictedLocations}}'

Dönüşler

NestedKeyValueList

{ options: [{ locationId:int, alias:string, name:string, subtitle:string, raw:KeyValueList }], totalResults:int }
POST

/v1/concierge/set_bid_listing

#
Updates the draft bid answer linked to a held bid and completes or submits the fill.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidID int Gerekli Held bid id.
locationAlias string Gerekli Slug found after the slash when opening a location.
inventoryTypeID int Gerekli Inventory type id.
priceAmountInSmallestUnit int Gerekli Price in currency smallest units.
currencyCode string Gerekli 3 digit currency code.
dateTime string Gerekli Date and time of listing.
firstName string Gerekli First name of listing.
lastName string Gerekli Last name of listing.
emailAddress string Gerekli Email address associated with the listing.
phoneNumber string Gerekli Contact phone number for the bid answer.
locationCategoryFieldIDValueList array Gerekli Category field values.
outsideRequestedTimeframeAcknowledged bool İsteğe Bağlı false Set true only after the seller accepts the out-of-timeframe bid answer warning.
isWritingRequest bool İsteğe Bağlı false Required true to update the linked draft.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/concierge/set_bid_listing' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'locationAlias={{locationAlias}}' \
  --data-urlencode 'inventoryTypeID={{inventoryTypeID}}' \
  --data-urlencode 'priceAmountInSmallestUnit={{priceAmountInSmallestUnit}}' \
  --data-urlencode 'currencyCode={{currencyCode}}' \
  --data-urlencode 'dateTime={{dateTime}}' \
  --data-urlencode 'firstName={{firstName}}' \
  --data-urlencode 'lastName={{lastName}}' \
  --data-urlencode 'emailAddress={{emailAddress}}' \
  --data-urlencode 'phoneNumber={{phoneNumber}}' \
  --data-urlencode 'locationCategoryFieldIDValueList={{locationCategoryFieldIDValueList}}' \
  --data-urlencode 'outsideRequestedTimeframeAcknowledged={{outsideRequestedTimeframeAcknowledged}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

string

Unique bid answer identification number.
POST

/v1/concierge/set_copy_request_share_state

#
Saves the current optional, whitelisted composer share state for a UUID-backed request row immediately before the browser shares the link. Public-by-design: logged-out composers can share; writes still require matching SearchRequestID + CopyRequestUUID plus the authenticated owner or same PHP session.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchRequestID int İsteğe Bağlı 0 Internal ATLocationCustomSearchRequests.ID returned to the current composer instance.
copyRequestUUID string İsteğe Bağlı (empty string) Opaque UUID returned with the composer parse payload.
shareStateJson string İsteğe Bağlı (empty string) JSON object containing optional whitelisted intent state.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to true once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/concierge/set_copy_request_share_state' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchRequestID={{searchRequestID}}' \
  --data-urlencode 'copyRequestUUID={{copyRequestUUID}}' \
  --data-urlencode 'shareStateJson={{shareStateJson}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ copyRequestUUID, shareState }
POST

/v1/concierge/set_listing_media

#
Uploads a listing image and creates an ATMedia row that can be used by
locationset_listing image category fields.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
isWritingRequest bool İsteğe Bağlı true Must be true to create media.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/concierge/set_listing_media' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ mediaID, mediaUrl, thumbUrl, mediaType }
POST

/v1/concierge/set_search_request_media

#
Stores ATMedia ids uploaded through the v2 Intent Composer on the
matching custom-search request row.

The search request is the durable handoff used later by
Community::CreatePostFromComposer, so this endpoint only persists owned
ATMedia ids; it does not create post links directly.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchRequestID int İsteğe Bağlı 0 ATLocationCustomSearchRequests.ID owned by the caller.
mediaIdList string İsteğe Bağlı (empty string) Comma-separated attachment ATMedia ids the caller owns.
inlineMediaIdList string İsteğe Bağlı (empty string) Comma-separated inline ATMedia ids reserved for rich inline media.
isWritingRequest bool İsteğe Bağlı false Required true to persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/concierge/set_search_request_media' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchRequestID={{searchRequestID}}' \
  --data-urlencode 'mediaIdList={{mediaIdList}}' \
  --data-urlencode 'inlineMediaIdList={{inlineMediaIdList}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ searchRequestID, mediaRequestObject: { version, attachments: [], inline: [] } }

/v1/location/

Handles all location related functions.

GET

/v1/location/get_category

#
Returns the locations category type (f.i. Restaurant or Prepaid-Restaurant) and the required field list for listings of this category.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/location/get_category' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue'

Dönüşler

NestedKeyValueList

Name of category and list of fields for this location type.
GET

/v1/location/get_category_list

#
Searches all categories

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) filter criteria
filterBy string İsteğe Bağlı locationCategoryName comma seperated list of fields that should be included
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/location/get_category_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'filterBy={{filterBy}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing Requirements matching the searchquery defined in filter
GET

/v1/location/get_city_list

#
Searches all cities

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) filter criteria
filterBy string İsteğe Bağlı cityName comma seperated list of fields that should be included
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/location/get_city_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'filterBy={{filterBy}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing Requirements matching the searchquery defined in filter
GET

/v1/location/get_comparable_trades

#
Returns comparable price information for any inventory type and date.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal
dateTime string Gerekli Date and Time of listing, must match one of the screenshots provided in the Key Value list below.
Date format: YYYY-MM-DD HH:MM:SS
inventoryTypeID int Gerekli inventoryTypeID found in /v1/location/get_inventory_types
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/location/get_comparable_trades' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'dateTime=2026-06-26 18:15:00' \
  --data-urlencode 'inventoryTypeID=2'

Dönüşler

NestedKeyValueList

The MetaInformation section of this return object contains a key 'average_priceAmountInSmallestUnit' which contains the data AT generally uses for pricing guidance.
If there are not enough direct comparables for this location or inventory type the next closest location and inventory type will be used.
Sometimes this causes the function to elevate the average price of the comparables stated in the KeyValueList, if that happened the priceFactor may be elevated and isExactInventoryTypeComparable will be false.
GET

/v1/location/get_inventory_types

#
Returns the inventory types available for the requested location.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal
searchFilter string İsteğe Bağlı (empty string) Search filter
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/location/get_inventory_types' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'searchFilter={{searchFilter}}'

Dönüşler

NestedKeyValueList

List containing all available inventory types for locationAlias
GET

/v1/location/get_list

#
Searches all location aliasses

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string Gerekli filter criteria
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/location/get_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing Requirements matching the searchquery defined in filter
GET

/v1/location/get_metric_history

#
Returns history of location metrics across a defined timeframe

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
metricList string Gerekli list of metrics to return. All available metricnames for location and timeframe are returned in the MetaInformation of the return list
interval string Gerekli timeframe between metrics, valid values are: day,week,month,year
dateRangeStart string Gerekli oldest date of metrics to be reported
Date format: YYYY-MM-DD
dateRangeEnd string Gerekli latest date of metrics to be reported
Date format: YYYY-MM-DD
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/location/get_metric_history' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'metricList={{metricList}}' \
  --data-urlencode 'interval={{interval}}' \
  --data-urlencode 'dateRangeStart=2026-03-12' \
  --data-urlencode 'dateRangeEnd=2026-06-25'

Dönüşler

NestedKeyValueList

MetaInformation of NestedKeyValueList contains all available metricnames for the location and timeframe selected.
GET

/v1/location/get_metrics

#
Returns detailed 90 day location trading metrics

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
dateRangeStart string Gerekli oldest date of metrics to be reported
Date format: YYYY-MM-DD
dateRangeEnd string Gerekli latest date of metrics to be reported
Date format: YYYY-MM-DD
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/location/get_metrics' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'dateRangeStart=2026-03-12' \
  --data-urlencode 'dateRangeEnd=2026-06-25'

Dönüşler

NestedKeyValueList
GET

/v1/location/get_new_location_duplicate_options

#
Returns possible existing locations before a user proposes a missing venue. Public-by-design: read-only same-site duplicate suggestions are shown before submit so logged-out users can see whether a venue already exists before authentication.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationName string Gerekli Proposed venuelocation name.
fullAddress string İsteğe Bağlı (empty string) Proposed full address.
cityText string İsteğe Bağlı (empty string) City, market slug, or airportcity code.
pageSize int İsteğe Bağlı 5 Maximum suggestions to return.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/location/get_new_location_duplicate_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationName= New Supper Club' \
  --data-urlencode 'fullAddress= 123 Main St, New York, NY' \
  --data-urlencode 'cityText=new-york' \
  --data-urlencode 'pageSize={{pageSize}}'

Dönüşler

NestedKeyValueList

{ query:string, options:[{locationId:int, alias:string, name:string, subtitle:string}], totalResults:int, hasPotentialDuplicates:bool }
GET

/v1/location/get_profile

#
Returns public profile metadata and regulation-derived capabilities for a location.

Public-by-design: location profile metadata is used for publicly indexable community pages; marketplace actions are separately gated by the returned capabilities.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli The public ATLocation alias.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/location/get_profile' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=carbone-new-york'

Dönüşler

NestedKeyValueList

{ location: {..., createdDate, aboutIntro?: {aboutPost, profileImageMedia, profileImageFrame, bannerImageMedia, bannerImageFrame}, creator?: {userID, alias, avatar, profileURL}, localToplist?: {rank, cityName, citySlug, url}, marketplace?: {avgTradingPrice90Day, lowTradingPrice90Day, highTradingPrice90Day}, community?: {postCount, rating, ratingCount, latestPostURL}}, sellerRelationships: {enabled, sellers, total}, capabilities: {...}, viewer: {myPlansAtLocation?: {...}}, copy: {...} }
POST

/v1/location/set

#
Create a Location

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationName string Gerekli Name of the Location (must be unique in the system)
locationCategoryID int Gerekli Category ID of the location. [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/location/get_category_list", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"locationCategoryID", "description":"locationCategoryName"}}]
citySlug string Gerekli Slug of city the location or event is in [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/location/get_city_list", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"citySlug", "description":"cityName"}}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationName= Hot New Spot Miami' \
  --data-urlencode 'locationCategoryID=1' \
  --data-urlencode 'citySlug=new-york' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

string

returns the alias of the location
POST

/v1/location/set_confirm_proposed_location

#
Confirms a proposed missing location. Three distinct eligible confirmations promote it into ATLocation.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
proposedLocationID int Gerekli ATProposedLocations.ID.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set_confirm_proposed_location' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'proposedLocationID={{proposedLocationID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Updated new-location rich attachment payload.
POST

/v1/location/set_custom_region

#
Splits a larger geographical area into a smaller one

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
oldRegionIATACode string Gerekli IATA code that defines the current region
newRegionIATACode string Gerekli region that should be split into
newRegionMunicipalitySlug string Gerekli slug of new region
newRegionCustomMunicipalityName string İsteğe Bağlı (empty string) Sometimes the name of the region doesn't fit the UX purpose (e.g. Fonteville in Monaco should be Monaco), this parameter overrides the given name
newRegionEmoji string İsteğe Bağlı (empty string) Emoji for the new region.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set_custom_region' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'oldRegionIATACode={{oldRegionIATACode}}' \
  --data-urlencode 'newRegionIATACode={{newRegionIATACode}}' \
  --data-urlencode 'newRegionMunicipalitySlug={{newRegionMunicipalitySlug}}' \
  --data-urlencode 'newRegionCustomMunicipalityName={{newRegionCustomMunicipalityName}}' \
  --data-urlencode 'newRegionEmoji={{newRegionEmoji}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

List containing Requirements matching the searchquery defined in filter
POST

/v1/location/set_general_opening_hours

#
Set a locations opening hours.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal
firstOpeningDate string İsteğe Bağlı (empty string) Defines when this location opens for the first time.
mondayOpeningTime int İsteğe Bağlı 0 Monday Opening time in military hours
mondayClosingTime int İsteğe Bağlı 23 Monday Closing time in military hours
tuesdayOpeningTime int İsteğe Bağlı 0 Tuesday Opening time in military hours
tuesdayClosingTime int İsteğe Bağlı 23 Tuesday Closing time in military hours
wednesdayOpeningTime int İsteğe Bağlı 0 Wednesday Opening time in military hours
wednesdayClosingTime int İsteğe Bağlı 23 Wednesday Closing time in military hours
thursdayOpeningTime int İsteğe Bağlı 0 Thursday Opening time in military hours
thursdayClosingTime int İsteğe Bağlı 23 Thursday Closing time in military hours
fridayOpeningTime int İsteğe Bağlı 0 Friday Opening time in military hours
fridayClosingTime int İsteğe Bağlı 23 Friday Closing time in military hours
saturdayOpeningTime int İsteğe Bağlı 0 Saturday Opening time in military hours
saturdayClosingTime int İsteğe Bağlı 23 Saturday Closing time in military hours
sundayOpeningTime int İsteğe Bağlı 0 Sunday Opening time in military hours
sundayClosingTime int İsteğe Bağlı 23 Sunday Closing time in military hours
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set_general_opening_hours' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'firstOpeningDate=2026-10-08' \
  --data-urlencode 'mondayOpeningTime=18' \
  --data-urlencode 'mondayClosingTime=22' \
  --data-urlencode 'tuesdayOpeningTime=18' \
  --data-urlencode 'tuesdayClosingTime=22' \
  --data-urlencode 'wednesdayOpeningTime=18' \
  --data-urlencode 'wednesdayClosingTime=22' \
  --data-urlencode 'thursdayOpeningTime=18' \
  --data-urlencode 'thursdayClosingTime=22' \
  --data-urlencode 'fridayOpeningTime=18' \
  --data-urlencode 'fridayClosingTime=22' \
  --data-urlencode 'saturdayOpeningTime=18' \
  --data-urlencode 'saturdayClosingTime=22' \
  --data-urlencode 'sundayOpeningTime=18' \
  --data-urlencode 'sundayClosingTime=22' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true on success
POST

/v1/location/set_inventory_type

#
Creates a location-specific inventory type when no existing type has the requested name.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal
inventoryTypeName string Gerekli Inventory type label to create, for example "Chef counter for 2".
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set_inventory_type' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'inventoryTypeName=Chef counter for 2' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ inventoryTypeID, inventoryTypeName, created }
POST

/v1/location/set_listing

#
Submits a new listing for review or if the user has the Permission::SelfReviewListings the listing will be approved. If the timeframe and price matches a vacant bid, the bid will be filled automatically. Please keep in mind that account limits apply as posted in the permission overview of your account.
Note: This function currently only supports single timeslot listings, support for multiday listings such as hotel listings will follow.
Support for virtual phone, email and card numbers will also follow in a future release.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal
inventoryTypeID int Gerekli inventoryTypeID found in /v1/location/get_inventory_types
priceAmountInSmallestUnit int Gerekli Smallest possible currency unit, for example USD 100 would be 10000 (usd-cents), amounts will be rounded to next 5 increment.
Refer to the MetaInformation of the return object of /v1/location/get_comparable_trades for pricing information. Endpoint will also return if there is an available bid - if available bid price is matched in your upload, bid will automatically be filled.
currencyCode string Gerekli 3 digit currency code, currently all prices will be converted to USD and rounded
dateTime string Gerekli Date and Time of listing, must match one of the screenshots provided in the Key Value list below.
Date format: YYYY-MM-DD HH:MM:SS
firstName string Gerekli First name of listing
lastName string Gerekli Last name of listing
emailAddress string Gerekli Email address associated with the listing
phoneNumber string Gerekli Phone number associated with the listing
locationCategoryFieldIDValueList array Gerekli Refer to /v1/location/get_category to identify the required and optional field list for the location you are submitting for.
All image files have to be passed by providing a valid https URL
Maximum file size: 5MB
Accepted file types: JPEG or PNG format.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set_listing' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'inventoryTypeID=2' \
  --data-urlencode 'priceAmountInSmallestUnit=10000' \
  --data-urlencode 'currencyCode=USD' \
  --data-urlencode 'dateTime=2026-06-26 18:15:00' \
  --data-urlencode 'firstName={{firstName}}' \
  --data-urlencode 'lastName={{lastName}}' \
  --data-urlencode 'emailAddress={{emailAddress}}' \
  --data-urlencode 'phoneNumber=+1 605 555 8881' \
  --data-urlencode 'locationCategoryFieldIDValueList=[{"fieldID":"2", "fieldValue":"https://your.webhosting.provider/path/image.jpg"}, {"fieldID":"11", "fieldValue":"Patio Seating"}]' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

string

Unique listing identification number, commonly referred to as "listingID" that can be used whenever accessing the listing for example in /v1/listing/get_portfolio_listings, /v1/listing/set_price or /v1/listing/set_market_visibility
POST

/v1/location/set_proposed_location

#
Posts a proposed missing location to a city board for community verification.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
boardId int Gerekli Community board ID selected by the v2 Intent Composer.
locationName string Gerekli Proposed venuelocation name.
fullAddress string Gerekli Full street address.
categoryText string Gerekli Category name or ID.
cityText string Gerekli City, market slug, or airportcity code.
duplicateAcknowledged int İsteğe Bağlı 0 Must be 1 after the user reviewed duplicate suggestions.
body string İsteğe Bağlı (empty string) Optional post body from the composer.
mediaIdList string İsteğe Bağlı (empty string) Optional comma-separated ATMedia IDs owned by the posting user.
duplicatePayload string İsteğe Bağlı (empty string) Optional JSON payload with duplicate suggestions shown to the user.
googlePlacesID string İsteğe Bağlı (empty string) Optional Google Places ID if already captured.
searchRequestID int İsteğe Bağlı 0 Optional ATLocationCustomSearchRequests.ID from the intent composer, linked after post creation when owned by the caller.
firstOpeningDate string İsteğe Bağlı (empty string) Optional first date the location opens. Format YYYY-MM-DD.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set_proposed_location' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'boardId={{boardId}}' \
  --data-urlencode 'locationName= New Supper Club' \
  --data-urlencode 'fullAddress= 123 Main St, New York, NY 10001' \
  --data-urlencode 'categoryText= Restaurant' \
  --data-urlencode 'cityText=new-york' \
  --data-urlencode 'duplicateAcknowledged={{duplicateAcknowledged}}' \
  --data-urlencode 'body={{body}}' \
  --data-urlencode 'mediaIdList={{mediaIdList}}' \
  --data-urlencode 'duplicatePayload={{duplicatePayload}}' \
  --data-urlencode 'googlePlacesID={{googlePlacesID}}' \
  --data-urlencode 'searchRequestID={{searchRequestID}}' \
  --data-urlencode 'firstOpeningDate=2026-07-31' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ post:{...}, postID:int, postUrl:string, proposedLocationID:int, status:string, confirmations:int, confirmationsRequired:int, firstOpeningDate:string }
POST

/v1/location/set_subscribe_to_city_area_priority_bids

#
Subscribe to Concierge Bids for the Area
You will receive a message each time when a bid is placed in the region.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
citySlug string Gerekli City Slug [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set_subscribe_to_city_area_priority_bids' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'citySlug=new-york' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if successful
POST

/v1/location/set_subscribe_to_location_priority_bids

#
Subscribe to Insider Bids
You will receive a message each time when a bid is placed for this location.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set_subscribe_to_location_priority_bids' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

Returns true if successful
POST

/v1/location/set_unlock_exact_listing_times

#
Unlock Exact Listing Times
You will be able to see all exact listing start times for this day after unlocking.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
date string Gerekli Date that shall be unlocked.
Date format: YYYY-MM-DD [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set_unlock_exact_listing_times' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'date=2026-06-25' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

Returns true if successful
POST

/v1/location/set_unsubscribe_from_city_area_priority_bids

#
Unsubscribe from Concierge Bids for the Area
You will no longer receive a message each time when a bid is placed in the region.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
citySlug string Gerekli City Slug [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set_unsubscribe_from_city_area_priority_bids' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'citySlug=new-york' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if successful
POST

/v1/location/set_unsubscribe_from_location_priority_bids

#
Unsubscribe from Insider Bids
You will no longer receive a message each time when a bid is placed for this location.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationAlias string Gerekli Slug found after the slash when opening a location in the portal [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/location/set_unsubscribe_from_location_priority_bids' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

Returns true if successful

/v1/events/

Endpoints for real-world event entities (F1 races, conventions, big concerts, fashion weeks, etc.) ranked globally and surfaced in Market Data and via

GET

/v1/events/get_event

#
Return the editable event payload for the rich event card editor. Requires the caller to be the event originator or hold GlobalCommunityAdministration.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
eventSlug string Gerekli The event's URLSlug.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/events/get_event' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'eventSlug=first-miami-f1-race-weekend'

Dönüşler

KeyValueList

Returns 'event' with details, location metadata, country targeting, and viewer.canEdit.
GET

/v1/events/get_event_associated_venues

#
Returns venues associated with an event (i.e. venues that benefit from demand lift during the event's date window). Reads from the ATLocationEvents/ATLocation join table populated by set_event_venue_association.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
eventSlug string Gerekli The event's URLSlug.
pageSize int İsteğe Bağlı 20 Page size.
pageNumber int İsteğe Bağlı 0 Page number.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/events/get_event_associated_venues' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'eventSlug=first-miami-f1-race-weekend' \
  --data-urlencode 'pageSize=20' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

KeyValueList

Returns 'venues' (array of {locationID, alias, name}) and 'totalResults'.
GET

/v1/events/get_event_candidates

#
Search existing public-facing real-world events for composer attachment. Public-by-design: read-only public event picker candidate search for composer attachment.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchText string İsteğe Bağlı (empty string) Optional eventcategory search text. Leave blank to list existing public events for duplicate prevention.
categoryID int İsteğe Bağlı 0 Optional ATLocationEventsCategories.ID filter.
citySlug string İsteğe Bağlı (empty string) Optional city slug used to prefer city-relevant events.
pageSize int İsteğe Bağlı 8 Number of events to return (1-50).
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/events/get_event_candidates' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchText={{searchText}}' \
  --data-urlencode 'categoryID={{categoryID}}' \
  --data-urlencode 'citySlug=miami' \
  --data-urlencode 'pageSize=8'

Dönüşler

KeyValueList

Returns 'events' with eventID, name, urlSlug, iconEmoji, category, dateWindow, nearestOccurrence, and optional ownerPostURL.
GET

/v1/events/get_event_categories

#
Search existing event categories for the v2 composer event picker. Public-by-design: read-only public event picker category list for composer attachment.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchText string İsteğe Bağlı (empty string) Optional category search text.
pageSize int İsteğe Bağlı 20 Number of categories to return (1-100).
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/events/get_event_categories' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchText=sports' \
  --data-urlencode 'pageSize=20'

Dönüşler

KeyValueList

Returns 'categories' with categoryID, name, iconEmoji, parentCategoryID, and urlSlug.
GET

/v1/events/get_event_location_options

#
Search physical-location choices for the rich event card map picker. Requires the caller to be the event originator or hold GlobalCommunityAdministration.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
eventSlug string Gerekli The event's URLSlug.
searchText string İsteğe Bağlı (empty string) Venueaddress search text.
pageSize int İsteğe Bağlı 8 Maximum options per source (1-12).
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/events/get_event_location_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'eventSlug=first-miami-f1-race-weekend' \
  --data-urlencode 'searchText=Paris City Hall' \
  --data-urlencode 'pageSize=8'

Dönüşler

KeyValueList

Returns 'options' combining AT venues and Google placeaddress suggestions.
GET

/v1/events/get_event_occurrences

#
Return detailed occurrence rows for a selected public event. Public-by-design: read-only public event picker occurrence list for composer attachment.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
eventID int Gerekli ATLocationEvents.ID.
pageSize int İsteğe Bağlı 12 Number of event-time rows to return (1-100).
dateFilter string İsteğe Bağlı all One of all|upcoming|past.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/events/get_event_occurrences' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'eventID=12' \
  --data-urlencode 'pageSize=12' \
  --data-urlencode 'dateFilter=upcoming'

Dönüşler

KeyValueList

Returns 'occurrences' with eventTimeID, repeatOnWeekday, startend dates and times, hours, locationCategoryID, importanceLevel, and display labels.
GET

/v1/events/get_event_place_details

#
Resolve a Google placeaddress suggestion for the rich event card map picker. Requires the caller to be the event originator or hold GlobalCommunityAdministration.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
eventSlug string Gerekli The event's URLSlug.
googlePlacesID string Gerekli Google Places place_id selected from get_event_location_options.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/events/get_event_place_details' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'eventSlug=first-miami-f1-race-weekend' \
  --data-urlencode 'googlePlacesID=ChIJ...'

Dönüşler

KeyValueList

Returns 'place' with display name, formatted address, coordinates, and country code.
GET

/v1/events/get_event_summary

#
Returns a single event resolved by URL slug. Includes the owning post URL so callers can route the user into the existing forum viewer for the full event view (per the events feature design — there is no dedicated event detail page; the forum viewer is the event viewer).

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
eventSlug string Gerekli The event's URLSlug.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/events/get_event_summary' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'eventSlug=first-miami-f1-race-weekend'

Dönüşler

KeyValueList

Returns 'event' (single event row in the same shape as get_top_events entries).
GET

/v1/events/get_events_in_city

#
Returns real-world events whose effect radius covers a given city, OR whose pinned venue (Event-ATLocation_ID) is in that city, OR whose associated venues (ATLocationEvents/ATLocation) include any venue in that city. "In range" is computed as ST_Distance_Sphere(EventLocation, cityCenter) <= EffectRadiusInMeters, where the city center is the IsScheduled=1 airport's Coordinates (falling back to any airport row for the slug).

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
citySlug string Gerekli ATAirport.MunicipalitySlug.
pageSize int İsteğe Bağlı 10 Number of events (1-50).
categorySlug string İsteğe Bağlı (empty string) Optional category slug.
dateRange string İsteğe Bağlı 90d Forward window for next-occurrence date.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/events/get_events_in_city' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'citySlug=miami' \
  --data-urlencode 'pageSize=10' \
  --data-urlencode 'categorySlug={{categorySlug}}' \
  --data-urlencode 'dateRange=90d'

Dönüşler

KeyValueList

Returns 'events' (event rows in same shape as get_top_events with optional 'distanceFromCityKm' and 'matchReason') plus 'cityName', 'citySlug', 'cityLat', 'cityLng', 'totalResults'.
GET

/v1/events/get_events_near

#
Returns the top real-world events near a given latlong, ranked by geographic proximity then by next upcoming occurrence. Distance is computed against EventLocation (POINT) using ST_Distance_Sphere. Events pinned to a venue (Event-ATLocation_ID set, EventLocation null) fall back to the venue's coordinates via a sub-join.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
lat float Gerekli Latitude in decimal degrees.
long float Gerekli Longitude in decimal degrees.
pageSize int İsteğe Bağlı 4 Number of events to return (1-50).
categorySlug string İsteğe Bağlı (empty string) Optional category slug.
dateRange string İsteğe Bağlı 90d Forward window for next-occurrence date.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/events/get_events_near' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'lat=25.96815' \
  --data-urlencode 'long=-80.23816' \
  --data-urlencode 'pageSize=4' \
  --data-urlencode 'categorySlug={{categorySlug}}' \
  --data-urlencode 'dateRange=90d'

Dönüşler

KeyValueList

Returns 'events' (same row shape as get_top_events with additional 'distanceMeters' field) plus 'lat', 'lng', 'dateRange', 'categorySlug'.
GET

/v1/events/get_top_events

#
Returns the top real-world events globally, ranked by next upcoming occurrence. Filters to events with EventLocation set or Event-ATLocation_ID set so recurring weekday demand patterns and national holidays are excluded.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
pageSize int İsteğe Bağlı 20 Number of events to return (1-100).
categorySlug string İsteğe Bağlı (empty string) Optional category slug — matches the named category and any descendants in the parent hierarchy. Empty = all categories.
dateRange string İsteğe Bağlı 90d Forward window for next-occurrence date: 7d, 30d, 90d, 180d, 365d.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/events/get_top_events' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'pageSize=20' \
  --data-urlencode 'categorySlug={{categorySlug}}' \
  --data-urlencode 'dateRange=90d'

Dönüşler

KeyValueList

Returns 'events' (array of event rows with eventID, name, urlSlug, iconEmoji, category, nextOccurrence, geographic, ownerPostID, ownerPostURL, originatorUserID, earnedTraderPoints), 'totalResults', 'dateRange', 'categorySlug'.
POST

/v1/events/set_create_event

#
Create a real-world event from the v2 composer event picker. Requires CreateEvent. The permission defaults to true so staff can disable it only for users who abuse event creation.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
eventName string Gerekli Event label to create.
categoryID int İsteğe Bağlı 0 ATLocationEventsCategories.ID selected in the event card.
categoryName string İsteğe Bağlı (empty string) Optional category name fallback for duplicate validation.
isWritingRequest bool İsteğe Bağlı false Set true after validating duplicate behavior to actually create the event.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/events/set_create_event' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'eventName=Miami Food Festival' \
  --data-urlencode 'categoryID=1' \
  --data-urlencode 'categoryName=Food Festivals' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

KeyValueList

Returns 'event' with eventID, name, urlSlug, category, nearestOccurrence plus 'created''wouldCreate'.
POST

/v1/events/set_event

#
Edit an existing event. Empty -1 sentinel values mean "leave unchanged." Requires the caller to be the event originator or hold GlobalCommunityAdministration. Use "__clear__" for optional stringlist fields that should be cleared.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
eventSlug string Gerekli URLSlug of the event to edit.
name string İsteğe Bağlı (empty string) New event name (empty = no change).
description string İsteğe Bağlı (empty string) New description (empty = no change, "__clear__" = clear).
iconEmoji string İsteğe Bağlı (empty string) New emoji glyph (empty = no change, "__clear__" = clear).
effectRadiusInMeters int İsteğe Bağlı -1 New demand-effect radius in meters (-1 = no change, 0 = clear).
primaryCategorySlug string İsteğe Bağlı (empty string) New primary category slug (empty = no change).
newURLSlug string İsteğe Bağlı (empty string) New URLSlug (empty = no change). Must be unique.
externalURL string İsteğe Bağlı (empty string) New external URL (empty = no change, "__clear__" = clear).
locationMode string İsteğe Bağlı keep One of keep|venue|point|clear.
eventLocationID int İsteğe Bağlı 0 ATLocation.ID used when locationMode=venue.
eventLat string İsteğe Bağlı (empty string) Latitude used when locationMode=point.
eventLng string İsteğe Bağlı (empty string) Longitude used when locationMode=point.
defaultImportanceLevel int İsteğe Bağlı -1 Default demand importance (-1 = no change).
affectsOpeningTimes int İsteğe Bağlı -1 10 to set whether the event affects opening times (-1 = no change).
countryCodeIncludeList string İsteğe Bağlı (empty string) JSON or comma list of ISO country codes, "__clear__" to clear.
countryCodeExcludeList string İsteğe Bağlı (empty string) JSON or comma list of ISO country codes, "__clear__" to clear.
isWritingRequest bool İsteğe Bağlı false Required true to actually write.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/events/set_event' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'eventSlug=first-miami-f1-race-weekend' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'description={{description}}' \
  --data-urlencode 'iconEmoji={{iconEmoji}}' \
  --data-urlencode 'effectRadiusInMeters=-1' \
  --data-urlencode 'primaryCategorySlug={{primaryCategorySlug}}' \
  --data-urlencode 'newURLSlug={{newURLSlug}}' \
  --data-urlencode 'externalURL={{externalURL}}' \
  --data-urlencode 'locationMode=keep' \
  --data-urlencode 'eventLocationID={{eventLocationID}}' \
  --data-urlencode 'eventLat={{eventLat}}' \
  --data-urlencode 'eventLng={{eventLng}}' \
  --data-urlencode 'defaultImportanceLevel=-1' \
  --data-urlencode 'affectsOpeningTimes=-1' \
  --data-urlencode 'countryCodeIncludeList={{countryCodeIncludeList}}' \
  --data-urlencode 'countryCodeExcludeList={{countryCodeExcludeList}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

KeyValueList

Returns 'event' and 'eventID' on success.
POST

/v1/events/set_event_category

#
Create a reusable event category from the v2 composer event picker. Requires GlobalCommunityAdministration because event categories are global taxonomy, not per-post user content.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
categoryName string Gerekli Category label to create.
isWritingRequest bool İsteğe Bağlı false Set true after validating duplicate behavior to actually create the category.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/events/set_event_category' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'categoryName=Concerts' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

KeyValueList

Returns 'category' with categoryID, name, iconEmoji, parentCategoryID, urlSlug plus 'created''wouldCreate'.
POST

/v1/events/set_event_location

#
Creates or proposes a missing location from an event surface, then keeps the resulting location tied to that event. Signed-in users with CreateEventLocationDirectly (or GlobalCommunityAdministration) createmerge the ATLocation immediately. Other signed-in users create an event-linked new-location proposal post that follows the normal confirmation workflow; once promoted, the location is linked to the event automatically.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
eventSlug string Gerekli The event URLSlug.
boardId int Gerekli New-location community board ID selected by the v2 Intent Composer.
locationName string Gerekli Proposed venuelocation name.
fullAddress string Gerekli Full street address.
categoryText string Gerekli Category name or ID.
cityText string Gerekli City, market slug, or airportcity code.
duplicateAcknowledged int İsteğe Bağlı 0 Must be 1 after the user reviewed duplicate suggestions.
body string İsteğe Bağlı (empty string) Optional post body from the composer.
mediaIdList string İsteğe Bağlı (empty string) Optional comma-separated ATMedia IDs owned by the posting user.
duplicatePayload string İsteğe Bağlı (empty string) Optional JSON payload with duplicate suggestions shown to the user.
googlePlacesID string İsteğe Bağlı (empty string) Optional Google Places ID if already captured.
searchRequestID int İsteğe Bağlı 0 Optional ATLocationCustomSearchRequests.ID from the intent composer, linked after post creation when owned by the caller.
firstOpeningDate string İsteğe Bağlı (empty string) Optional first date the location opens. Format YYYY-MM-DD.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/events/set_event_location' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'eventSlug=first-miami-f1-race-weekend' \
  --data-urlencode 'boardId=123' \
  --data-urlencode 'locationName= Sphere' \
  --data-urlencode 'fullAddress= 255 Sands Ave, Las Vegas, NV 89169' \
  --data-urlencode 'categoryText= Event' \
  --data-urlencode 'cityText=las-vegas' \
  --data-urlencode 'duplicateAcknowledged={{duplicateAcknowledged}}' \
  --data-urlencode 'body={{body}}' \
  --data-urlencode 'mediaIdList={{mediaIdList}}' \
  --data-urlencode 'duplicatePayload={{duplicatePayload}}' \
  --data-urlencode 'googlePlacesID={{googlePlacesID}}' \
  --data-urlencode 'searchRequestID={{searchRequestID}}' \
  --data-urlencode 'firstOpeningDate=2026-07-31' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Direct mode returns {mode,event,locationID,locationAlias,locationUrl,status}; proposal mode returns {post,postID,postUrl,proposedLocationID,event,status}.
POST

/v1/events/set_event_occurrence

#
Create a datetime occurrence for an existing event from the composer picker. Requires CreateEvent, the same default-on abuse-control permission used for event creation. Event originators and GlobalCommunityAdministration may also add rows through the normal event-edit permission path.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
eventID int Gerekli ATLocationEvents.ID selected in the event card.
startDate string Gerekli Start date in YYYY-MM-DD.
endDate string İsteğe Bağlı (empty string) Optional end date in YYYY-MM-DD.
startTime string İsteğe Bağlı (empty string) Optional start time in HH:MM.
endTime string İsteğe Bağlı (empty string) Optional end time in HH:MM.
importanceLevel int İsteğe Bağlı 1 Optional event importance override.
eventTimeID int İsteğe Bağlı 0 Optional ATLocationEventsTimes.ID to update instead of creating a new occurrence.
isWritingRequest bool İsteğe Bağlı false Set true after validating duplicate behavior to actually createupdate the occurrence.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/events/set_event_occurrence' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'eventID=12' \
  --data-urlencode 'startDate=2026-06-21' \
  --data-urlencode 'endDate={{endDate}}' \
  --data-urlencode 'startTime=19:00' \
  --data-urlencode 'endTime=22:00' \
  --data-urlencode 'importanceLevel=1' \
  --data-urlencode 'eventTimeID={{eventTimeID}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

KeyValueList

Returns 'occurrence' with eventTimeID, datetime labels, createdupdatedwouldCreatewouldUpdate.
POST

/v1/events/set_event_venue_association

#
Add or remove an association between an event and a venue (ATLocation). Tags drive demand projections and the venue-transaction royalty.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
eventSlug string Gerekli The event's URLSlug.
locationAlias string Gerekli The venue's ATLocation.Alias.
action string İsteğe Bağlı add 'add' or 'remove'.
isWritingRequest bool İsteğe Bağlı false Required true to actually write.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/events/set_event_venue_association' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'eventSlug=first-miami-f1-race-weekend' \
  --data-urlencode 'locationAlias={{locationAlias}}' \
  --data-urlencode 'action=add' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

KeyValueList

Returns 'eventID', 'locationID', 'action'.

/v1/partner/

GET

/v1/partner/get_bulk_availability_template

#
Get the CSV columns and example row for bulk venue availability imports.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_bulk_availability_template' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

array

CSV template metadata.
GET

/v1/partner/get_inventory

#
Get location-specific inventory types and linked community posts for a managed venue.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to inspect.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_inventory' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1'

Dönüşler

array

Venue inventory payload.
GET

/v1/partner/get_listing_regulation_policy

#
Get the venue listing-regulation override policy for a managed venue.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to inspect.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_listing_regulation_policy' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1'

Dönüşler

array

Current policy, editable state, schema status, and available policy choices.
GET

/v1/partner/get_location_claim_options

#
Search venues that can be selected for a partner management claim.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
q string İsteğe Bağlı (empty string) Search query.
pageSize int İsteğe Bağlı 15 Maximum options to return.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_location_claim_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'q=Cipriani' \
  --data-urlencode 'pageSize=15'

Dönüşler

array

Multiselect-compatible venue options with claimmanage state.
GET

/v1/partner/get_location_dashboard

#
Get overview demand, listing, sales, and conversion signals for a managed venue.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to inspect.
overviewRange string İsteğe Bağlı 30d Timeframe key: 1d, 7d, 30d, or custom.
overviewFrom string İsteğe Bağlı (empty string) Custom range start date when overviewRange is custom.
overviewTo string İsteğe Bağlı (empty string) Custom range end date when overviewRange is custom.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_location_dashboard' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'overviewRange=30d' \
  --data-urlencode 'overviewFrom=2026-06-01' \
  --data-urlencode 'overviewTo=2026-06-24'

Dönüşler

array

Venue dashboard metrics and chart series.
GET

/v1/partner/get_location_inventory_forecast

#
Get a managed venue's inventory forecast using the same market-insight engine as the seller forecast, without public API pricing.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int İsteğe Bağlı 0 Target location ID.
locationAlias string İsteğe Bağlı (empty string) Optional target location alias when locationID is not supplied.
dateRange string İsteğe Bağlı 30d One of 30d, 60d, 90d, custom.
startDate string İsteğe Bağlı (empty string) Custom range start date when dateRange=custom, YYYY-MM-DD.
endDate string İsteğe Bağlı (empty string) Custom range end date when dateRange=custom, YYYY-MM-DD.
sourceLocationIDs string İsteğe Bağlı (empty string) Optional comma-separated similar restaurant location IDs. If empty, saved similar restaurants are used.
sourceLocationAliases string İsteğe Bağlı (empty string) Optional comma-separated similar restaurant aliases.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_location_inventory_forecast' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'locationAlias=esthers-kitchen-las-vegas' \
  --data-urlencode 'dateRange=30d' \
  --data-urlencode 'startDate=2026-06-12' \
  --data-urlencode 'endDate=2026-07-12' \
  --data-urlencode 'sourceLocationIDs=2,3' \
  --data-urlencode 'sourceLocationAliases=delilah-las-vegas,carbone-las-vegas'

Dönüşler

NestedKeyValueList

Partner venue inventory forecast.
GET

/v1/partner/get_location_likeness_group

#
Get saved similar restaurants and suggested related restaurants for a managed venue forecast.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to inspect.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_location_likeness_group' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1'

Dönüşler

array

Saved and suggested likeness restaurants for partner forecasting.
GET

/v1/partner/get_location_likeness_options

#
Search restaurants that can be added to a managed venue's similarity group.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Target location ID.
q string İsteğe Bağlı (empty string) Search query.
pageSize int İsteğe Bağlı 15 Maximum options to return.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_location_likeness_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'q=Cipriani' \
  --data-urlencode 'pageSize=15'

Dönüşler

array

Multiselect-compatible restaurant options.
GET

/v1/partner/get_location_livestream

#
Get the featured livestream post for a managed venue.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to inspect.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_location_livestream' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1'

Dönüşler

array

Venue livestream payload.
GET

/v1/partner/get_locations

#
Get the venue locations this user can manage through partner roles, global community administration, or the legacy location-user grant.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_locations' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

array

Managed venue directory with management links.
GET

/v1/partner/get_opening_hours

#
Get weekly recurring opening-hour windows for a venue the current user may edit.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to inspect.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_opening_hours' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1'

Dönüşler

array

Opening-hour schema status, source, and weekday windows.
GET

/v1/partner/get_team

#
Get active team members, pending invites, and recent partner audit events for a managed venue.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to inspect.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/partner/get_team' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1'

Dönüşler

array

Venue team payload.
POST

/v1/partner/set_bulk_availability

#
Validate or create bulk dated availability for a managed venue. Created rows become normal ATAppointment listings.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to manage.
csvRows string Gerekli CSV rows using partnerget_bulk_availability_template.
createMissingInventoryTypes bool İsteğe Bağlı false Create unknown inventory types before writing rows.
isWritingRequest bool İsteğe Bağlı false Dry-run guard for writes.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_bulk_availability' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'csvRows=inventory type,date,timestart hour,quantity,price,currency\nDinner Table,2026-07-14,19:00,1,125,USD' \
  --data-urlencode 'createMissingInventoryTypes=false' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Validation preview or created batch details.
POST

/v1/partner/set_delete_location

#
Preview or delete a location for failing community standards. Deletion is admin-only and applies new-location reward penalties when applicable.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to delete.
reason string İsteğe Bağlı (empty string) Community-standards reason shown in audit and penalty ledger descriptions.
confirmation string İsteğe Bağlı (empty string) Type DELETE when isWritingRequest is true.
isWritingRequest bool İsteğe Bağlı false False returns a dry-run penalty preview; true soft-deletes and applies penalties.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_delete_location' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'reason=Duplicate or unsuitable location.' \
  --data-urlencode 'confirmation=DELETE' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Delete preview or completed delete status.
POST

/v1/partner/set_inventory_type

#
Create or update a location-specific inventory type for a managed venue.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to manage.
inventoryTypeID int İsteğe Bağlı 0 Existing inventory type ID, or 0 to create one.
name string İsteğe Bağlı (empty string) Inventory type name.
description string İsteğe Bağlı (empty string) Short description.
allowListings bool İsteğe Bağlı true Whether sellers can create listings for this type.
groupName string İsteğe Bağlı (empty string) Optional group label.
headcount int İsteğe Bağlı 0 Optional default headcount.
defaultBidAmount int İsteğe Bağlı 0 Default bid amount in cents.
defaultOfferAmount int İsteğe Bağlı 0 Default offer amount in cents.
isWritingRequest bool İsteğe Bağlı false Dry-run guard for writes.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_inventory_type' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'inventoryTypeID={{inventoryTypeID}}' \
  --data-urlencode 'name=Dinner Table' \
  --data-urlencode 'description=Standard dinner availability.' \
  --data-urlencode 'allowListings=true' \
  --data-urlencode 'groupName=Dining' \
  --data-urlencode 'headcount=2' \
  --data-urlencode 'defaultBidAmount=10000' \
  --data-urlencode 'defaultOfferAmount=12500' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Inventory type update result.
POST

/v1/partner/set_inventory_type_post_link

#
Link a community post to a venue inventory type.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to manage.
inventoryTypeID int Gerekli Inventory type ID.
discussionPostID int Gerekli Community post ID to link.
isWritingRequest bool İsteğe Bağlı false Dry-run guard for writes.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_inventory_type_post_link' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'inventoryTypeID=2' \
  --data-urlencode 'discussionPostID=100' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Link status.
POST

/v1/partner/set_listing_regulation_policy

#
Save the venue listing-regulation override policy. Only venue OwnersAdmins, legacy venue managers, and global community administrators may save.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to manage.
policy string Gerekli One of AllowAnyone or CurrentOwnerResellOnly.
isWritingRequest bool İsteğe Bağlı false Dry-run guard for writes.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_listing_regulation_policy' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'policy=AllowAnyone' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Updated listing-regulation policy payload.
POST

/v1/partner/set_location_claim_request

#
Request management access to a location. The request is sent to GlobalCommunityAdministration users in a chat with approvereject action buttons.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to claim.
message string İsteğe Bağlı (empty string) Optional claim note for reviewers.
isWritingRequest bool İsteğe Bağlı false Dry-run guard for writes.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_location_claim_request' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'message=I manage this venue'\''s reservation book.' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Claim request and review chat details.
POST

/v1/partner/set_location_likeness_group

#
Save the managed venue's similarity group used by partner inventory forecasts.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Target location ID.
locationIDs string İsteğe Bağlı (empty string) Comma-separated similar restaurant location IDs.
isWritingRequest bool İsteğe Bağlı false Dry-run guard for writes.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_location_likeness_group' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'locationIDs=2,3' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Updated likeness group.
POST

/v1/partner/set_location_livestream_post

#
Feature a location-connected community post as the venue livestream station, or create a new station post and feature it.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to manage.
discussionPostID int İsteğe Bağlı 0 Existing public top-level location post to feature. Use 0 when createPost is true.
title string İsteğe Bağlı (empty string) Optional title for a newly created station post.
body string İsteğe Bağlı (empty string) Optional body for a newly created station post.
createPost bool İsteğe Bağlı false Create a new location discussion post before featuring it.
clear bool İsteğe Bağlı false Remove the featured livestream post from the public location page.
isWritingRequest bool İsteğe Bağlı false Dry-run guard for writes.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_location_livestream_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'discussionPostID=100' \
  --data-urlencode 'title=Cipriani Radio' \
  --data-urlencode 'body=Live from Cipriani.' \
  --data-urlencode 'createPost=false' \
  --data-urlencode 'clear=false' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Featured post details plus public post and Go Live URLs.
POST

/v1/partner/set_opening_hours

#
Validate or save weekly recurring split opening hours for a managed venue.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to manage.
hoursJSON string İsteğe Bağlı (empty string) JSON payload with days, closed flags, and openclose windows.
isWritingRequest bool İsteğe Bağlı false Dry-run guard for writes.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_opening_hours' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'hoursJSON={"days":[{"weekday":0,"closed":false,"windows":[{"openTime":"11:30","closeTime":"14:00"},{"openTime":"17:00","closeTime":"23:00"}]}]}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Updated opening-hour payload or validation result.
POST

/v1/partner/set_team_invite

#
Create or accept a role-scoped venue team invite. Creating an invite preserves normal referral attribution through the returned URL's v parameter.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int İsteğe Bağlı 0 Location ID for the invite.
role string İsteğe Bağlı Analyst One of Owner, Admin, InventoryManager, HostSupport, Finance, Analyst.
email string İsteğe Bağlı (empty string) Optional invite email annotation.
inviteToken string İsteğe Bağlı (empty string) Existing invite token to accept instead of creating a new invite.
acceptInvite bool İsteğe Bağlı false Accept inviteToken for the signed-in user.
isWritingRequest bool İsteğe Bağlı false Dry-run guard for writes.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_team_invite' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'role=InventoryManager' \
  --data-urlencode 'email=manager@example.com' \
  --data-urlencode 'inviteToken={{inviteToken}}' \
  --data-urlencode 'acceptInvite=false' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Invite URL or accepted invite details.
POST

/v1/partner/set_team_member_remove

#
Remove a user from a venue team.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to manage.
userID int Gerekli Team member user ID to remove.
isWritingRequest bool İsteğe Bağlı false Dry-run guard for writes.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_team_member_remove' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'userID=1' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Removal status.
POST

/v1/partner/set_team_member_role

#
Add an existing user to a venue team or change that user's partner role.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationID int Gerekli Location ID to manage.
aliasOrEmail string Gerekli Existing user's alias or email.
role string Gerekli One of Owner, Admin, InventoryManager, HostSupport, Finance, Analyst.
isWritingRequest bool İsteğe Bağlı false Dry-run guard for writes.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/partner/set_team_member_role' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationID=1' \
  --data-urlencode 'aliasOrEmail=ColorfulRod45' \
  --data-urlencode 'role=HostSupport' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

array

Updated team member details.

/v1/sidebar/

V2 sidebar — runtime readrender endpoints. The sidebar markup is owned by `\AT\ATV2Sidebar` (declarative registry at configatv2-sidebar.php → librariesatv2-sidebar.lib.php) and rendered server-side once per page load. After the initial render the client may mutate sidebar-relevant state (pinunpin, expandcollapse a submenu, change the plans sortgroup). These endpoints are how the client gets a fresh, server-canonical render after such a mutation — so layout never drifts between client and server, and the client never re-implements the markup. The complementary mutation endpoints are set_expanded (submenu collapse state) and set_plans_view (plans-block sort). Per-user bookmarks moved to v1bookmarks — they're no longer references to sidebar registry items but full {title, url, description} rows owned by the user. Auth: all endpoints accept anonymous callers and degrade gracefully (no plans block). The viewer's user id is taken from the apiv1 dispatcher's session resolution — no explicit auth params.

GET

/v1/sidebar/get_plans_render

#
Returns only the server-rendered "My Plans" block plus the matching plans state. Used by the v2 shell to defer the expensive city-grouped travel-plans fetch until after the initial page render. Auth: plans are personal; anonymous callers receive ErrorUnauthorized.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
activeNavKey string İsteğe Bağlı (empty string) Current page's active sidebar key.
theme string İsteğe Bağlı upscale_at Theme name; controls per-theme markup helper. Defaults to "upscale_at".
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/sidebar/get_plans_render' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'activeNavKey=travel-plans' \
  --data-urlencode 'theme=upscale_at'

Dönüşler

NestedKeyValueList

{html: string, state: {activeKey, plans}}
GET

/v1/sidebar/get_render

#
Returns server-canonical rendered HTML for the v2 sidebar plus the matching state struct. The client's contract is to replace the inner HTML of the sidebar aside element with Payload.html and update window.ATV2ShellState.sidebar with Payload.state — there is no client-side render, ever. Use this after any mutation that affects the sidebar's structure or data (pinunpin, plans sortgroup toggle, app addedremoved). For pure active-state changes triggered by inline navigation, prefer window.ATV2Sidebar.applyActiveKey() instead — it's a DOM toggle and doesn't need a roundtrip.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
activeNavKey string İsteğe Bağlı (empty string) Current page's active sidebar key.
theme string İsteğe Bağlı upscale_at Theme name; controls per-theme markup helper. Defaults to "upscale_at".
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/sidebar/get_render' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'activeNavKey=network' \
  --data-urlencode 'theme=upscale_at'

Dönüşler

See live ?explain output for the exact response shape.

GET

/v1/sidebar/get_state

#
Returns the current state of the v2 sidebar — the same struct that is embedded in window.ATV2ShellState.sidebar at SSR time. Use this when the client needs to re-derive its in-memory model without re-parsing the rendered HTML. Pass the page's currently-active sidebar key as activeNavKey so the server can mark the right item active in the response. The expanded collapsed submenu set is read server-side from the `atv2_sidebar_expanded` cookie — pass nothing for that.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
activeNavKey string İsteğe Bağlı (empty string) Current page's active sidebar key (e.g. "network", "market-data", "transactions"). Empty string when the page does not declare one.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/sidebar/get_state' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'activeNavKey=network'

Dönüşler

See live ?explain output for the exact response shape.

POST

/v1/sidebar/set_expanded

#
Toggle the expandcollapse state of a top-level submenu and persist the choice to the user's `atv2_sidebar_expanded` cookie. Returns the post-mutation {html, state} so the client can swap the rendered nav block. The cookie is the source of truth for SSR re-renders. JS may optimistically toggle [hidden] in the DOM before this call returns; the swap reconciles either way.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
itemKey string Gerekli Submenu key (must match a sidebar item's key). Named `itemKey` rather than `key` to avoid colliding with the apiv1 dispatcher's reserved `key=` auth parameter.
expanded bool Gerekli True to expand, false to collapse.
activeNavKey string İsteğe Bağlı (empty string) Current page's active sidebar key.
theme string İsteğe Bağlı upscale_at Theme name; defaults to "upscale_at".
isWritingRequest bool İsteğe Bağlı false Set true to actually write the cookie.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/sidebar/set_expanded' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'itemKey=market-data' \
  --data-urlencode 'expanded=true' \
  --data-urlencode 'activeNavKey=network' \
  --data-urlencode 'theme=upscale_at' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{html, state}
POST

/v1/sidebar/set_plans_view

#
Persist the user's preferred sort mode for the v2 sidebar's "Your Plans" block (city-grouped appointments). The choice is written to the `atv2_sidebar_plans_view` cookie so subsequent SSR renders pick it up; the response carries the freshly-rendered {html, state} so the client can swap the rendered nav + plans without a follow-up.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
sortBy string Gerekli Sort mode: "upcoming" (most upcoming first; default) or "name" (alphabetical city name).
activeNavKey string İsteğe Bağlı (empty string) Current page's active sidebar key.
theme string İsteğe Bağlı upscale_at Theme name; defaults to "upscale_at".
isWritingRequest bool İsteğe Bağlı false Set true to actually write the cookie.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/sidebar/set_plans_view' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'sortBy=upcoming' \
  --data-urlencode 'activeNavKey=network' \
  --data-urlencode 'theme=upscale_at' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{html, state}

/v1/notification/

Manages all notification related functions

GET

/v1/notification/get_detail

#
Returns the full non-chat notification payload for a modal or deep link. Chat notifications are intentionally excluded; those belong to the v2 Messageschat dock flow.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
notificationID int İsteğe Bağlı 0 Notification row ID.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/notification/get_detail' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'notificationID={{notificationID}}'

Dönüşler

NestedKeyValueList

notification detail including media, recipients, actionButtons, and translation
GET

/v1/notification/get_list

#
Returns the most recent notifications for the authenticated user. The result is a single list sorted newest-first. Each item carries a readState ('Created' | 'Pushed' | 'SentViaEmail' | 'Read') and an isUnread boolean so consumers can render new vs. read in one pass. Pagination: pass offset to fetch older pages. MetaInformation.hasMore is true only when another page exists beyond the returned items. Calling this endpoint does NOT mark any notifications as read — use notificationset_readstate for that.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
pageSize int İsteğe Bağlı 50 Max results to return (clamped to 1..250)
includeRead bool İsteğe Bağlı true If false, returns only unread notifications.
offset int İsteğe Bağlı 0 Skip this many results (for lazyinfinite pagination).
tags string İsteğe Bağlı (empty string) Optional comma-separated list of tag names to filter by, e.g. "Bids,Action Required". Empty = no filter.
readState string İsteğe Bağlı all all, unread, or read. all preserves includeRead behavior for older callers.
includeSummary bool İsteğe Bağlı false If true, MetaInformation includes selected tags and formatted summary functions for the returned rows.
includeActions bool İsteğe Bağlı false If true, each row includes executable action-button DTOs.
includeTags bool İsteğe Bağlı true If true, each row includes processed display tags.
appointmentID int İsteğe Bağlı 0 Optional appointment database tag filter for transaction-scoped history.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/notification/get_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'pageSize=10' \
  --data-urlencode 'includeRead=true' \
  --data-urlencode 'offset={{offset}}' \
  --data-urlencode 'tags={{tags}}' \
  --data-urlencode 'readState=all' \
  --data-urlencode 'includeSummary=false' \
  --data-urlencode 'includeActions=false' \
  --data-urlencode 'includeTags=true' \
  --data-urlencode 'appointmentID={{appointmentID}}'

Dönüşler

See live ?explain output for the exact response shape.

GET

/v1/notification/get_preview

#
Returns a compact, authenticated preview for one notification. Used by the ATV2 realtime preview banner after the WebSocket nudge tells the browser which notification row changed. The socket carries only the notification ID; this endpoint re-reads the row under the acting user so notification and chat text never travels on the unauthenticated WebSocket channel. Calling this endpoint does NOT mark the notification as read.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
notificationID int İsteğe Bağlı 0 Notification row ID from the realtime nudge.
includeChatMessage bool İsteğe Bağlı false If true and this is a chat notification, includes the persisted chat message DTO.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/notification/get_preview' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'notificationID={{notificationID}}' \
  --data-urlencode 'includeChatMessage=false'

Dönüşler

NestedKeyValueList

{ notificationID, notificationBodyID, type, isUnread, readState, createdDate, title, bodyPreview, destinationURL, isChatMessage, conversationID, chatName, chatNameTranslation, participantCount, isUserToUserChat, senderID, senderAlias, senderAvatar, isSystemGenerated, hasMedia, translation: { senderLocaleCode, senderLanguageCode, receiverLanguageCode, ... }, Message }
GET

/v1/notification/get_recipients

#
Returns recipientread-state information for one non-chat notification.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
notificationID int İsteğe Bağlı 0 Notification row ID.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/notification/get_recipients' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'notificationID={{notificationID}}'

Dönüşler

NestedKeyValueList

{ notificationID, recipients: [{UserID, Username, State, ReadTime}] }
POST

/v1/notification/set_action

#
Executes a non-chat notification action button owned by the caller. Preferred clients send actionButtonID from get_detailget_list. For older notification actions that never created an action row, send notificationID plus actionButtonName; the server re-reads the row and validates the action before execution.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
actionButtonID int İsteğe Bağlı 0 ATNotificationIntelligentTagsActionButtons.ID when available.
notificationID int İsteğe Bağlı 0 Notification row ID for rowless legacy actions.
actionButtonName string İsteğe Bağlı (empty string) ActionButton class name for rowless legacy actions.
getParametersJson string İsteğe Bağlı (empty string) Optional JSON object passed to the ActionButton OnConfirm GetParameters argument.
globalParametersJson string İsteğe Bağlı (empty string) Optional JSON object passed to the ActionButton OnConfirm GlobalParameters argument.
isWritingRequest bool İsteğe Bağlı false Required true to execute.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/notification/set_action' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'actionButtonID={{actionButtonID}}' \
  --data-urlencode 'notificationID={{notificationID}}' \
  --data-urlencode 'actionButtonName={{actionButtonName}}' \
  --data-urlencode 'getParametersJson={}' \
  --data-urlencode 'globalParametersJson={}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ ActionButtonID, NotificationID, RedirectURL, ClientAction, OpenChatDock }
POST

/v1/notification/set_all_read

#
Marks every unread non-chat notification for the authenticated user as read. The native v2 notifications dashboard calls this once on open so the page behaves like an inbox visit rather than only marking the first lazy-loaded page. Chat notifications are intentionally excluded; the v2 chat dock owns chat-read timing so merely opening the notifications dashboard does not clear message unread state.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/notification/set_all_read' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ Marked }
POST

/v1/notification/set_delete

#
Soft-deletes one notification owned by the authenticated user. The notification row remains in ATNotifications for audithistory, but DeletedDate is set so native v2 notification lists and unread counts no longer show it.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
notificationID int İsteğe Bağlı 0 Notification row ID.
isWritingRequest bool İsteğe Bağlı false Required true to execute.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/notification/set_delete' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'notificationID={{notificationID}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ notificationID, deleted }
POST

/v1/notification/set_readstate

#
Changes the visibility of the notifications in the ID list In the portal private listings appear in the private section and public in 'Publicly traded listings'

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
commaSeperatedNotificationIDList string Gerekli list of notificationID to be altered
readState string Gerekli possible values are Created, Pushed, SentViaEmail or Read
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/notification/set_readstate' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'commaSeperatedNotificationIDList={{commaSeperatedNotificationIDList}}' \
  --data-urlencode 'readState=Read' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if status change was successful

/v1/bookmarks/

V2 user bookmarks — list add remove reorder. Bookmarks here are arbitrary destinations the user has chosen to save: a forum thread, a location market page, a user profile, a specific listing. Each row carries its own title + url + description, persisted per-user in `ATUserBookmarks` (added in 000002 migration). V2 newsfeed post URLs also cache `Cache-ATDiscussionPosts_ID` for indexed post bookmark counts. This replaces the earlier sidebar-pin model (set_pin set_reorder on v1sidebar) where bookmarks were registry-key references — keeping a pinned copy of an item that already lived in the main nav was redundant by design and showed up as duplicate rows in the sidebar. Auth: every endpoint requires an authenticated user ($_APIUserID > 0). The library layer (\AT\ATV2Bookmarks) enforces ownership on every read and write so a stolenforged bookmark id never lets one user touch another's row.

GET

/v1/bookmarks/get_list

#
Returns the authenticated user's active bookmarks, ordered by their chosen sort (drag-reorderable on the v2 Bookmarks page). Empty array for users with no bookmarks; ErrorInvalidUser for anonymous callers.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/bookmarks/get_list' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

See live ?explain output for the exact response shape.

POST

/v1/bookmarks/set_add

#
Add (or refresh) a bookmark for the authenticated user. Idempotent on URL: if the user already has a live bookmark for the supplied url, the existing row is returned (with title description updated to the new values) instead of creating a duplicate. The url must be either http(s) absolute or root-relative ("foobar"). Anything else (javascript:, data:, mailto:, naked schemes) is rejected with ErrorBadParameters so untrusted page code can't smuggle exotic urls into the user's collection. Canonical v2 newsfeed post URLs populate Cache-ATDiscussionPosts_ID so the feed can count how many users bookmarked a post without parsing URLs. A user's first bookmark for a v2 forum post sends the post author a push-only Priority notification tagged back to that discussion post.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
title string Gerekli Display title for the card on the bookmarks page (max 250 chars; truncated).
url string Gerekli Destination url. Absolute http(s) or root-relative path.
description string İsteğe Bağlı (empty string) Optional descriptive subtitle. Plain text, no markup.
isWritingRequest bool İsteğe Bağlı false Set true to actually persist the bookmark.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bookmarks/set_add' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'title=Apt at 432 Park Ave' \
  --data-urlencode 'url=modulesv2listingindex.php?id=42' \
  --data-urlencode 'description=Listing posted by ColorfulRod45' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ id: int, url: string, postId: int|null, bookmarkCount: int|null }
POST

/v1/bookmarks/set_remove

#
Remove a bookmark owned by the authenticated user. This is a hard delete. Removing a bookmark that doesn't exist or isn't owned by this user returns Error rather than silently succeeding, so client UI can distinguish "deleted" from "wasn't yours to delete".

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bookmarkID int Gerekli The ID returned by set_add or get_list.
isWritingRequest bool İsteğe Bağlı false Set true to actually delete.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bookmarks/set_remove' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bookmarkID=42' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ id: int, url: string, postId: int|null, bookmarkCount: int|null }
POST

/v1/bookmarks/set_reorder

#
Replace the user's bookmark sort order with the supplied id list. IDs not currently owned by the user (or already deleted) are silently skipped; any owned bookmarks not present in the list keep their relative order, appended after the supplied ones — defensive in case the client view is stale.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
orderedBookmarkIDs string Gerekli Comma-separated bookmark IDs in the desired order.
isWritingRequest bool İsteğe Bağlı false Set true to actually persist the order.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bookmarks/set_reorder' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'orderedBookmarkIDs=42,17,9' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

true on success

/v1/trusted_client/

Trusted Client invite-code endpoints.

GET

/v1/trusted_client/get_invite_preview

#
Preview safe Trusted Client invite terms and status for a code. Public-by-design: invite entry needs to show whether a code is usable before checkout; the payload excludes recipient identity and commission terms.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
code string İsteğe Bağlı (empty string) Trusted Client invite code.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/trusted_client/get_invite_preview' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'code=ABCD2-EFGH3'

Dönüşler

NestedKeyValueList

Invite status, visible terms, expiry, and checkout action URL when usable.
GET

/v1/trusted_client/get_invites

#
Return the authenticated user's Trusted Client invite-code management summary.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/trusted_client/get_invites' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList

Activeredeemed invite codes and creator permission limits.
POST

/v1/trusted_client/set_claim_invite_code

#
Claim a Trusted Client invite code for the signed-in user, or return a sign-in preview for a guest. Public-by-design: logged-out code entry must show the same safe terms and sign-in action without mutating the invite.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
code string İsteğe Bağlı (empty string) Trusted Client invite code.
isWritingRequest bool İsteğe Bağlı false Set true to claim the invite when the caller is signed in.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/trusted_client/set_claim_invite_code' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'code=ABCD2-EFGH3' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Claimed invite preview and creator-visible invite payload.
POST

/v1/trusted_client/set_create_invite_code

#
Create an unclaimed Trusted Client invite code. The signed-in person who enters the code claims it and becomes tied to the creator.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
expireTime string İsteğe Bağlı (empty string) Future expiry datetime.
discountPercentInitiation float İsteğe Bağlı 0 Initiation discount percent, capped by TrustedClientMaxDiscountPercentInitiation.
discountPercentAnnual float İsteğe Bağlı 0 Annual-fee discount percent, capped by TrustedClientDiscountPercentAnnual.
advisorUserAlias string İsteğe Bağlı (empty string) Optional selected advisor alias when TrustedClientMaySelectAdvisor is granted.
isWritingRequest bool İsteğe Bağlı false Set true to actually create the invite code.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/trusted_client/set_create_invite_code' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'expireTime=2026-12-31' \
  --data-urlencode 'discountPercentInitiation=60' \
  --data-urlencode 'discountPercentAnnual=100' \
  --data-urlencode 'advisorUserAlias=AdvisorAlias' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Created invite and updated invite summary.
POST

/v1/trusted_client/set_register_interest

#
Register interest in Trusted Client access for a logged-in user or guest email. Public-by-design: no-code visitors need a lightweight way to express interest without an invite.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
email string İsteğe Bağlı (empty string) Guest email address. Logged-in users may leave this blank.
isWritingRequest bool İsteğe Bağlı false Set true to save the interest.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/trusted_client/set_register_interest' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'email=client@example.com' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Saved interest status.
POST

/v1/trusted_client/set_revoke_invite_code

#
Revoke an unused Trusted Client invite code owned by the authenticated creator.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
inviteCodeID int Gerekli Invite code ID from get_invites.
isWritingRequest bool İsteğe Bağlı false Set true to actually revoke the invite code.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/trusted_client/set_revoke_invite_code' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'inviteCodeID=42' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Updated invite summary.
POST

/v1/trusted_client/set_send_administration_invite_code

#
Create an unclaimed administration Trusted Client invite code for an interest row. Requires AccessSpecialFunctions.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
interestID int Gerekli ATTrustedClientInterests row ID.
expireTime string İsteğe Bağlı (empty string) Future expiry datetime.
discountPercentInitiation float İsteğe Bağlı 0 Initiation discount percent.
discountPercentAnnual float İsteğe Bağlı 0 Annual-fee discount percent.
advisorUserAlias string İsteğe Bağlı (empty string) Optional selected advisor alias.
isWritingRequest bool İsteğe Bağlı false Set true to actually create the invite code.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/trusted_client/set_send_administration_invite_code' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'interestID=17' \
  --data-urlencode 'expireTime=2026-12-31' \
  --data-urlencode 'discountPercentInitiation=60' \
  --data-urlencode 'discountPercentAnnual=100' \
  --data-urlencode 'advisorUserAlias=AdvisorAlias' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Created invite details and notification status.

/v1/seller/

Seller dashboard aggregate endpoints.

GET

/v1/seller/get_capabilities

#
Returns the acting seller's current capability limits and readiness.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_capabilities' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_dashboard

#
Returns the seller dashboard overview for the acting user.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_dashboard' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_listing_intelligence

#
Returns listing-level customer view trends and pricing intelligence for listings owned by the acting seller.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingIDList string İsteğe Bağlı (empty string) Comma-separated listing UUIDs to inspect.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_listing_intelligence' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingIDList=f8045dce-642b-11f1-b2c0-bc24113bc000,47b2a789-6450-11f1-b2c0-bc24113bc000'

Dönüşler

NestedKeyValueList

Returns listings keyed by listing UUID. Each listing includes viewTrend with 30 daily buckets, totals, sourceOptionssourceTrends when views come from more than one source, and pricing with comparable completed-sale price and sell-timing guidance.
GET

/v1/seller/get_market_insight_location_report

#
Returns a sellability report for one venue in My Sales Market Insights. The report groups likely sellable inventory by inventory type, date, and timeframe, then adds active public competition already listed for each row.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationId int İsteğe Bağlı 0 AppointmentTrader location id
locationAlias string İsteğe Bağlı (empty string) location alias when locationId is not supplied
categorySlug string İsteğe Bağlı (empty string) optional market category slug
dateRange string İsteğe Bağlı 30d one of 30d, 60d, 90d, custom
startDate string İsteğe Bağlı (empty string) custom range start date when dateRange=custom, YYYY-MM-DD
endDate string İsteğe Bağlı (empty string) custom range end date when dateRange=custom, YYYY-MM-DD
sourceLocationIDs string İsteğe Bağlı (empty string) optional comma-separated related location IDs to use as additional demand sources
sourceLocationAliases string İsteğe Bağlı (empty string) optional comma-separated related location aliases to use as additional demand sources
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_market_insight_location_report' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationId=78' \
  --data-urlencode 'locationAlias=kevin-rathbun-steak-atlanta' \
  --data-urlencode 'categorySlug=restaurants' \
  --data-urlencode 'dateRange=30d' \
  --data-urlencode 'startDate=2026-06-12' \
  --data-urlencode 'endDate=2026-07-12' \
  --data-urlencode 'sourceLocationIDs=2,3' \
  --data-urlencode 'sourceLocationAliases=nobu-malibu,carbone-new-york'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_market_insight_locations

#
Returns ranked venues for one seller market insight city. The payload is loaded separately from the main market insights response so large venue strips can hydrate as each market tile comes into view.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
citySlug string Gerekli city market slug
categorySlug string İsteğe Bağlı (empty string) optional market category slug
pageSize int İsteğe Bağlı 32 number of venues to return for the city
dateRange string İsteğe Bağlı 30d one of 30d, 60d, 90d, custom
startDate string İsteğe Bağlı (empty string) custom range start date when dateRange=custom, YYYY-MM-DD
endDate string İsteğe Bağlı (empty string) custom range end date when dateRange=custom, YYYY-MM-DD
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_market_insight_locations' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'citySlug=austin' \
  --data-urlencode 'categorySlug=restaurants' \
  --data-urlencode 'pageSize=32' \
  --data-urlencode 'dateRange=30d' \
  --data-urlencode 'startDate=2026-06-12' \
  --data-urlencode 'endDate=2026-07-12'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_market_insights

#
Returns forward-looking seller market insights for the selected time window. The payload ranks city markets using same-calendar-window historical transaction demand from prior years, current marketplace demand, upcoming public events, popularity pressure, active supply mix, and the acting seller's coverage.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
dateRange string İsteğe Bağlı 30d one of 30d, 60d, 90d, custom
startDate string İsteğe Bağlı (empty string) custom range start date when dateRange=custom, YYYY-MM-DD
endDate string İsteğe Bağlı (empty string) custom range end date when dateRange=custom, YYYY-MM-DD
categorySlug string İsteğe Bağlı (empty string) optional market category slug
pageSize int İsteğe Bağlı 25 number of ranked markets to return
marketQ string İsteğe Bağlı (empty string) optional search filter applied before lazy market hydration
marketCities string İsteğe Bağlı (empty string) comma-separated city market slugs to include
marketCountryContinent string İsteğe Bağlı (empty string) comma-separated country- or continent- filter values
marketConfidence string İsteğe Bağlı (empty string) comma-separated confidence filter values
marketSupply string İsteğe Bağlı (empty string) comma-separated supply-state filter values
marketCoverage string İsteğe Bağlı (empty string) comma-separated coverage filter values
marketSignals string İsteğe Bağlı (empty string) comma-separated market-signal filter values
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_market_insights' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'dateRange=30d' \
  --data-urlencode 'startDate=2026-06-12' \
  --data-urlencode 'endDate=2026-07-12' \
  --data-urlencode 'categorySlug=restaurants' \
  --data-urlencode 'pageSize=25' \
  --data-urlencode 'marketQ=barcelona' \
  --data-urlencode 'marketCities=barcelona,madrid' \
  --data-urlencode 'marketCountryContinent=country-es' \
  --data-urlencode 'marketConfidence=medium' \
  --data-urlencode 'marketSupply=room' \
  --data-urlencode 'marketCoverage=uncovered' \
  --data-urlencode 'marketSignals=current-buyer-demand'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_market_notification_rank

#
Returns the acting seller's current notification rank for one location.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationId int Gerekli AppointmentTrader location id.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_market_notification_rank' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationId=78'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_market_notifications

#
Returns the acting seller's market notification location list grouped by continent and city.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_market_notifications' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_onboarding_location_options

#
Searches venues for the seller onboarding in-list selector. Public-by-design: prospective sellers can search venues before signing in.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
q string İsteğe Bağlı (empty string) venue search text
pageSize int İsteğe Bağlı 15 maximum options to return
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_onboarding_location_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'q=nobu' \
  --data-urlencode 'pageSize={{pageSize}}'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_onboarding_profile

#
Returns selected venue stats, related venues, and sponsor matches for seller onboarding. Public-by-design: prospective sellers need to understand their opportunity before signing in.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationIDs string İsteğe Bağlı (empty string) comma separated selected venue ids
sponsorAlias string İsteğe Bağlı (empty string) optional sponsor alias to prefer in ranking
sponsorOnly bool İsteğe Bağlı false when true, only return the provided sponsor alias.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_onboarding_profile' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationIDs=1,2' \
  --data-urlencode 'sponsorAlias={{sponsorAlias}}' \
  --data-urlencode 'sponsorOnly=false'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_performance_dashboard

#
Returns seller-private CRM and performance intelligence for the acting user.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
range string İsteğe Bağlı 30d one of 1d, 7d, 30d, custom
bucket string İsteğe Bağlı (empty string) optional bucket override: hour, day, week, or month
compare string İsteğe Bağlı previous_period one of previous_period, previous_week, previous_month, previous_year, none
customFrom string İsteğe Bağlı (empty string) custom range start date when range=custom, YYYY-MM-DD
customTo string İsteğe Bağlı (empty string) custom range end date when range=custom, YYYY-MM-DD
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_performance_dashboard' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'range=30d' \
  --data-urlencode 'bucket={{bucket}}' \
  --data-urlencode 'compare=previous_period' \
  --data-urlencode 'customFrom=2026-04-01' \
  --data-urlencode 'customTo=2026-05-01'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_reward_list

#
Returns active seller rewards.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
filter string İsteğe Bağlı all one of all, held, shortlisted, premium, direct_hire, custom
sort string İsteğe Bağlı newest one of newest, oldest, latest_picked_up, highest, lowest, location, ending_soon, ending_latest
searchFilter string İsteğe Bağlı (empty string) optional text search over venue, buyer, bid id, and request text
pageSize int İsteğe Bağlı 100 number of rewards to return
pageNumber int İsteğe Bağlı 0 zero-based page number
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_reward_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'filter=all' \
  --data-urlencode 'sort=newest' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_sponsorships

#
Returns sponsorship status for the acting seller.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
includeManagementDetails bool İsteğe Bağlı false Include sponsor-note, sponsor-link, sponsoree, and commission management data.
medalCategorySlug string İsteğe Bağlı concierges Medal category slug to manage in detailed mode. Omit for the legacy concierges payload.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_sponsorships' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'includeManagementDetails=false' \
  --data-urlencode 'medalCategorySlug=concierges'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_supply_assessment

#
Returns a four-state supply assessment for listing-creation guardrails. Use this before creating new supply to see whether a venue or exact inventory slot has room_for_supply, good_supply, oversupply, or no_estimation. The endpoint is authenticated because supply guidance can include seller-facing market context.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationId int İsteğe Bağlı 0 AppointmentTrader location id
locationAlias string İsteğe Bağlı (empty string) location alias when locationId is not supplied
categorySlug string İsteğe Bağlı (empty string) optional market category slug
inventoryTypeId int İsteğe Bağlı 0 optional inventory type id
date string İsteğe Bağlı (empty string) optional listing date, YYYY-MM-DD
startHour int İsteğe Bağlı -1 optional listing start hour 0-23; pass -1 for any time
endHour int İsteğe Bağlı -1 optional end hour 0-23; pass -1 for exact start hour
dateRange string İsteğe Bağlı 30d one of 30d, 60d, 90d, custom
startDate string İsteğe Bağlı (empty string) custom range start date when dateRange=custom, YYYY-MM-DD
endDate string İsteğe Bağlı (empty string) custom range end date when dateRange=custom, YYYY-MM-DD
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_supply_assessment' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationId=78' \
  --data-urlencode 'locationAlias=kevin-rathbun-steak-atlanta' \
  --data-urlencode 'categorySlug=restaurants' \
  --data-urlencode 'inventoryTypeId=2' \
  --data-urlencode 'date=2026-06-24' \
  --data-urlencode 'startHour=19' \
  --data-urlencode 'endHour=21' \
  --data-urlencode 'dateRange=30d' \
  --data-urlencode 'startDate=2026-06-12' \
  --data-urlencode 'endDate=2026-07-12'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_traderpoint_event_gaps

#
Returns paginated event-gap cities for the acting seller's matched markets.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
q string İsteğe Bağlı (empty string) optional city, country, or market search
pageSize int İsteğe Bağlı 25 number of event-gap rows to return
pageNumber int İsteğe Bağlı 0 zero-based page number
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_traderpoint_event_gaps' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'q=barcelona' \
  --data-urlencode 'pageSize=25' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_traderpoint_leadership_opportunities

#
Returns community leadership opportunities for the acting seller's matched markets.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
pageSize int İsteğe Bağlı 12 number of opportunities to return
pageNumber int İsteğe Bağlı 0 zero-based page number
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_traderpoint_leadership_opportunities' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'pageSize=12' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_traderpoint_overview

#
Returns the lightweight Earn Traderpoints workbench overview for the acting seller. The payload includes account balance, spam-rate status, Market Insights pricing, new-location reward status, and route destinations. Heavy opportunity lists are loaded through dedicated lazy endpoints.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_traderpoint_overview' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList
GET

/v1/seller/get_work_queue

#
Returns seller drafts, listings, submissions, active held or shortlisted bids, reviews, and transfer tasks.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingDateRange string İsteğe Bağlı yaklaşan Listing date window: upcoming, past_30d, past_90d, all, or custom.
listingFrom string İsteğe Bağlı (empty string) Custom listing range start date in YYYY-MM-DD format.
listingTo string İsteğe Bağlı (empty string) Custom listing range end date in YYYY-MM-DD format. Leave blank for open-ended.
includeArchived bool İsteğe Bağlı false Include archived listings in the primary listing rows.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/seller/get_work_queue' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingDateRange=upcoming' \
  --data-urlencode 'listingFrom=2026-06-01' \
  --data-urlencode 'listingTo=2026-06-30' \
  --data-urlencode 'includeArchived=false'

Dönüşler

NestedKeyValueList
POST

/v1/seller/set_close_sponsorship_request

#
Closes the acting seller's pending sponsor request for the selected medal.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
medalCategorySlug string İsteğe Bağlı concierges Medal category slug for the pending request.
isWritingRequest bool İsteğe Bağlı false Required true to close the request.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/seller/set_close_sponsorship_request' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'medalCategorySlug=concierges' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Closed sponsor request details.
POST

/v1/seller/set_onboarding_inlist

#
Saves the acting seller's onboarding in-list.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationIDs string İsteğe Bağlı (empty string) comma separated selected venue ids
isWritingRequest bool İsteğe Bağlı false Required true to save.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/seller/set_onboarding_inlist' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationIDs=1,2' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Saved venue ids and count.
POST

/v1/seller/set_onboarding_sponsor_request

#
Requests a seller onboarding sponsor, replacing the acting user's pending request when needed.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
sponsorAlias string İsteğe Bağlı (empty string) Alias of the sponsor to request.
isWritingRequest bool İsteğe Bağlı false Required true to save.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/seller/set_onboarding_sponsor_request' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'sponsorAlias=TopSeller' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Sponsor request status and chat URL.
POST

/v1/seller/set_onboarding_sponsor_request_cancel

#
Cancels the acting seller's pending onboarding sponsor request.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
isWritingRequest bool İsteğe Bağlı false Required true to cancel.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/seller/set_onboarding_sponsor_request_cancel' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Canceled sponsor request status.
POST

/v1/seller/set_request_sponsor_switch

#
Opens or reopens the acting seller's sponsor-change request chat for an approved sponsorship.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
medalCategorySlug string İsteğe Bağlı concierges Medal category slug for the current sponsorship.
isWritingRequest bool İsteğe Bağlı false Required true to open the switch request.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/seller/set_request_sponsor_switch' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'medalCategorySlug=concierges' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Sponsor switch chat details.
POST

/v1/seller/set_sponsorship_note

#
Saves the acting sponsor's public concierges sponsorship message.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
note string İsteğe Bağlı (empty string) Public "why work with me" sponsor message, trimmed to 120 characters.
medalCategorySlug string İsteğe Bağlı concierges Medal category slug.
isWritingRequest bool İsteğe Bağlı false Required true to save.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/seller/set_sponsorship_note' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'note=I help new sellers fill their first rewards cleanly.' \
  --data-urlencode 'medalCategorySlug=concierges' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Saved note, max length, and remaining character count.

/v1/portfolio/

Manages all portfolio related functions

GET

/v1/portfolio/get_last_order_list_id

#
Returns the order list that has been used last by the api user
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/portfolio/get_last_order_list_id' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

string

orderListID - if no order list has ever been used, the default order list will be returned
GET

/v1/portfolio/get_listings

#
Returns all listings in the users portfolio.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
getPopularityScoreBracket bool İsteğe Bağlı false if true, the popularity score for all listings will be returned
dateTimeRangeStart string İsteğe Bağlı (empty string) Time Range Start Date, will be ignored if empty format: YYYY-MM-DD HH:MM:SS
dateTimeRangeEnd string İsteğe Bağlı (empty string) Time Range End Date, will be ignored if empty format: YYYY-MM-DD HH:MM:SS
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/portfolio/get_listings' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'getPopularityScoreBracket={{getPopularityScoreBracket}}' \
  --data-urlencode 'dateTimeRangeStart=2026-06-26 18:00:00' \
  --data-urlencode 'dateTimeRangeEnd=2026-06-26 19:00:00'

Dönüşler

NestedKeyValueList

The listingID returned in this list can be used to handle listing status in other portfolio functions, such as:
/v1/listing/set_price
/v1/listing/set_market_visibility
/v1/listing/get_competing_listings
GET

/v1/portfolio/get_my_appointments_grouped_by_city

#
Returns the authenticated viewer's appointments grouped by city, with separate counts for upcoming (Date >= today) and past (Date < today) rows. Powers the v2 sidebar's "My Plans" block. Each group carries the city's IATA-style group code, display name, and emoji from ATAirport (joined via ATLocation.ATAirport_CityGroupCode, which is a denormalized cache column on ATLocation — no extra join to ATAirport in the count query). Filters applied (always): - CurrentOwner-ATUser_ID = the authenticated viewer (self-only; no peer-user param by design). - DeletedDate IS NULL on ATAppointment and ATLocation. - Status is one of the active My Plans appointment states returned by Appointment::GetMyPlansAppointmentStatuses(). - ATAirport_CityGroupCode populated (rows without a city are dropped silently — they cannot be grouped meaningfully). Sort: groups are returned in the requested order. "upcoming" puts cities with the most upcoming appointments first (ties broken by total count). "name" sorts alphabetically by city display name.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
sortBy string İsteğe Bağlı yaklaşan Sort mode: "upcoming" (default) or "name".
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/portfolio/get_my_appointments_grouped_by_city' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'sortBy=upcoming'

Dönüşler

See live ?explain output for the exact response shape.

GET

/v1/portfolio/get_my_calendar_items

#
Returns every time-bound item belonging to the viewer that falls in the window [from, to], normalized into the CalendarItem shape consumed by modulesv2travel_plans?view=calendar. P1 covers bids and appointments — the two types backed by an existing per-user fetcher. Location events, transactions, livestreams and contract deadlines plug in as additional foreach-blocks once their helpers exist (see CALENDAR_DESIGN.md §5).

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
from string Gerekli inclusive lower bound, format YYYY-MM-DD
to string Gerekli inclusive upper bound, format YYYY-MM-DD
types array İsteğe Bağlı [] optional allowlist of item types, e.g. ['listing','bid','appointment','sold']
limit int İsteğe Bağlı 500 cap on total items returned after merge
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/portfolio/get_my_calendar_items' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'from={{from}}' \
  --data-urlencode 'to={{to}}' \
  --data-urlencode 'types={{types}}' \
  --data-urlencode 'limit={{limit}}'

Dönüşler

NestedKeyValueList

{ items:[CalendarItem,...], meta:{from,to,counts,generatedAt} }
GET

/v1/portfolio/get_my_travel_plan_archived

#
Archived travel plans for the v2 "My Plans" archive view. Returns a newest-first list of the viewer's archived appointments, each carrying the city payload used by the normal My Plans landing page.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
limit int İsteğe Bağlı 25 Maximum archived plans to include.
offset int İsteğe Bağlı 0 Number of archived plans to skip.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/portfolio/get_my_travel_plan_archived' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'limit=25' \
  --data-urlencode 'offset={{offset}}'

Dönüşler

See live ?explain output for the exact response shape.

GET

/v1/portfolio/get_my_travel_plan_detail

#
Per-city travel plan detail — the v2 city detail page's data source. Returns the city's display data plus the viewer's appointments and active bids in that city, filtered to the requested time window (upcoming = on-or-after today, past = before today, archived = archived plans). Both lists are returned in the row shape that templatesportfolio _card_appointment.html and _card_active_bid.html expect, so the v2 page can call those partials directly with no field translation. Scale: per-user row counts are small. Both legacy library calls (`Bids::GetBidsByUserID`, `Appointment::GetAppointmentsByUserID`) scan only the user's rows; the per-city + per-window filter runs in PHP. Hard-capped at 200 rows per source.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
cityCode string Gerekli IATA-style city group code (e.g. 'NYC').
window string İsteğe Bağlı yaklaşan 'upcoming' (default), 'past', or 'archived'.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/portfolio/get_my_travel_plan_detail' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'cityCode=NYC' \
  --data-urlencode 'window=upcoming'

Dönüşler

See live ?explain output for the exact response shape.

GET

/v1/portfolio/get_my_travel_plan_upcoming

#
All-upcoming travel plans — the v2 "My Plans" landing page data. Returns a flat chronological list of the viewer's upcoming items (confirmed appointments + selling listings + active bids + seller-sold upcoming sales) within the next $days, each carrying the city it belongs to so the SSR view can group-render by city. Per-user bounded; hard-capped at 200 items per source.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
days int İsteğe Bağlı 365 How many days into the future to include.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/portfolio/get_my_travel_plan_upcoming' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'days=365'

Dönüşler

See live ?explain output for the exact response shape.

GET

/v1/portfolio/get_my_travel_plans

#
Travel plans by city — the v2 sidebar's "My Plans" data source. Returns one group per city the viewer has activity in, where activity is the union of: - My Plans appointments owned by or shared with the viewer (ATAppointment.Status IN ('Approved','Private','Unlocked','In Transfer')). - Active bids placed by the viewer (ATTransaction.Status='PENDING' with a non-null ATBids_ID). - Upcoming reservations the viewer sold, sourced from completed ATTransaction rows where the viewer was the cached seller. Each group's `upcomingCount` `pastCount` are the sum of appointment and bid counts; the per-source breakdown is also returned so the UI can render "2 trips · 3 bids" without another call. Scale: at hundreds of thousands of bidsappointments globally, both subqueries must seek by user-leading indexes: - ATAppointment(`CurrentOwner-ATUser_ID`) — singleton index. - ATTransaction(`Cache-Buyer-ATUser_ID`) — singleton index. The bid count runs against ATTransaction alone (no ATBidsATLocation join) by reading the denormalized `Cache-ATAirport_CityGroupCode` column. Per-user row counts are small, so the post-seek filter and GROUP BY are cheap.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
sortBy string İsteğe Bağlı yaklaşan Sort mode: "upcoming" (default) or "name".
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/portfolio/get_my_travel_plans' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'sortBy=upcoming'

Dönüşler

See live ?explain output for the exact response shape.

GET

/v1/portfolio/get_order_list_items

#
Returns the order list items for $orderListID

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
orderListID string İsteğe Bağlı (empty string) If parameter is not set or set to _last_, value of /v1/portfolio/get_last_order_list_id will be used
addLinksInHumanReadableDescription bool İsteğe Bağlı false If this is parameter is set to true the return field humanReadableLineItemDescription will include hyperlinks
pageSize int İsteğe Bağlı 750 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/portfolio/get_order_list_items' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'orderListID={{orderListID}}' \
  --data-urlencode 'addLinksInHumanReadableDescription={{addLinksInHumanReadableDescription}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

order list items
GET

/v1/portfolio/get_order_lists

#
Returns all available orderlists

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
pageSize int İsteğe Bağlı 250 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/portfolio/get_order_lists' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

order list items
GET

/v1/portfolio/get_valid_location_identifiers

#
Searches available location identifiers for purposes of creating a buy order

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) filter criteria
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/portfolio/get_valid_location_identifiers' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing Requirements matching the searchquery defined in filter
POST

/v1/portfolio/mint_calendar_feed_token

#
Returns the viewer's iCalendar subscription URL, minting a token on first call. Idempotent — subsequent calls return the same URL until the user explicitly revokes via set_revoke_calendar_feed_tokens. The URL is intentionally returned as plain HTTPS; clients flip the scheme to webcal: when they want to trigger a system "Subscribe?" prompt (iOS Safari, macOS Mail). See CALENDAR_DESIGN.md §6.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/mint_calendar_feed_token' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList

{ token, url, webcal }
POST

/v1/portfolio/set_archive_my_travel_plan

#
Archives an owned reservation from v2 My Plans. Archived plans are hidden from the upcomingpast city tabs and collected under the Archived Plans view.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
appointmentID int Gerekli Appointment ID to archive.
isWritingRequest bool İsteğe Bağlı false Required true to archive.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_archive_my_travel_plan' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appointmentID=251019' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Archive status and appointment id.
POST

/v1/portfolio/set_bulk_bid_order

#
Create a Bulk Buy Order IN BETA - NOT YET FUNCTIONAL The algorithm will place bids automatically pricing will be decided on a bid-per-bid basis but will never exceed or subsceed the minium bid price.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
locationIdentifier string Gerekli Ticker Code or Codes of Location or Index [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/portfolio/get_valid_location_identifiers", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"identifierCode", "description":"identifierName"}}]
inventoryTypeDesignator string Gerekli Inventory Type
In case of a buy order for restaurants, a Table for 2 would be 2
popularityScoreBracketRangeOrTimeRange string Gerekli PopularityScore Bracket Range
The range of Popularity Score that is acceptable for this buy order
A time window can be selected too, for larger orders popularity score is highly recommended
noticeOrDateRange string Gerekli Notice Bracket or Date Range
How far in the future from the bid date should the aquired listings be
minimumUnitPriceUSD string Gerekli Minimum Unit Price in full USD
maximumUnitPriceUSD string Gerekli Maximum Unit Price in full USD
fundingAccountID string Gerekli Which account should be used to fund this buy order?
Attention: Buy order will execute until total amount available in funding account is used or the order is cancelled.
To recirculate earnings select same deposit and funding account.
[clientFieldConfiguration:{"Type":"DropDown", "Callback":"/v1/account/get_list", "ListConfiguration":{"value":"accountID", "title":"accountNameAndBalance", "defaultOptionMessage":"Please Select Account To Fund This Buy Order"}}]
salesProceedsAccountID string Gerekli Which account should resale proceeds of this buy order be deposited to? [clientFieldConfiguration:{"Type":"DropDown", "Callback":"/v1/account/get_list", "ListConfiguration":{"value":"accountID", "title":"accountNameAndBalance", "defaultOptionMessage":"Please Select Account For Sales Deposits"}}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_bulk_bid_order' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'locationIdentifier=CAR.NYC,4CP.NYC,DEL.LAS or [TOP10-RESTAURANTS].NYC or [CustomOrderList#:ABC].x' \
  --data-urlencode 'inventoryTypeDesignator=2 or 2,3,4,5,6,7,8 or x' \
  --data-urlencode 'popularityScoreBracketRangeOrTimeRange=Popscore:7-10 or Weekdays:Sunday-Friday,Time:18-21' \
  --data-urlencode 'noticeOrDateRange=NoticeBracket:60D or DateRange:2025-12-23_2025-12-25' \
  --data-urlencode 'minimumUnitPriceUSD=5' \
  --data-urlencode 'maximumUnitPriceUSD=50' \
  --data-urlencode 'fundingAccountID={{fundingAccountID}}' \
  --data-urlencode 'salesProceedsAccountID={{salesProceedsAccountID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if buy order was successfully created
POST

/v1/portfolio/set_delete_order_list

#
Delete order list

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
orderListID string Gerekli ID of the order list that should be deleted [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_delete_order_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'orderListID={{orderListID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true on success
POST

/v1/portfolio/set_delete_order_list_item

#
Deletes an order list item

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
orderListItemID int Gerekli ID of the order list item that should be deleted
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_delete_order_list_item' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'orderListItemID={{orderListItemID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true on success
POST

/v1/portfolio/set_my_travel_plan_share_details

#
Updates or removes a community share for an owned My Plans appointment.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
appointmentID int İsteğe Bağlı 0 ATAppointment.ID for the owned plan.
postID int İsteğe Bağlı 0 Optional ATDiscussionPosts.ID for the existing shared plan post.
shareAttendees int İsteğe Bağlı 0 1 to show AppointmentTrader guests on the public plan card, 0 to hide them.
unshare int İsteğe Bağlı 0 1 to delete the shared plan post instead of saving detail changes.
isWritingRequest bool İsteğe Bağlı false Required true to write.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_my_travel_plan_share_details' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appointmentID=251019' \
  --data-urlencode 'postID=295588' \
  --data-urlencode 'shareAttendees=1' \
  --data-urlencode 'unshare={{unshare}}' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

{ appointmentID, sharePlan }
POST

/v1/portfolio/set_order_list

#
Create a new order list

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
name string Gerekli Name of the new list
description string İsteğe Bağlı (empty string) Short description of the new list
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_order_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'name=My Summer Plans' \
  --data-urlencode 'description=My Summer Plans' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

returns the new orderListID
POST

/v1/portfolio/set_order_list_item

#
Saves an order list item

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
orderListID string İsteğe Bağlı (empty string) If parameter is not set, value of /v1/portfolio/get_last_order_list_id will be used
listingID string İsteğe Bağlı (empty string) if this item is an existing appointment set the listingID
locationAlias string İsteğe Bağlı (empty string) locationAlias if this item is a bid. Slug found after the slash when opening a location in the portal
bidQuantity int İsteğe Bağlı 1 number of times the bid item should be placed
inventoryTypeID int İsteğe Bağlı 0 inventoryTypeID found in /v1/location/get_inventory_types
bidAmountInSmallestUnit int İsteğe Bağlı 0 Smallest possible currency unit, for example USD 100 would be 10000 (usd-cents), amounts will be rounded to next 5 increment.
Refer to the MetaInformation of the return object of /v1/location/get_comparable_trades for pricing information. Endpoint will also return if there is an available bid - if available bid price is matched in your upload, bid will automatically be filled.
currencyCode string İsteğe Bağlı USD 3 digit currency code, currently all prices will be converted to USD and rounded
dateTimeRangeStart string İsteğe Bağlı (empty string) Time Range Start Date format: YYYY-MM-DD HH:MM:SS
dateTimeRangeEnd string İsteğe Bağlı (empty string) Time Range End Date format: YYYY-MM-DD HH:MM:SS
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_order_list_item' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'orderListID={{orderListID}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'bidQuantity=1' \
  --data-urlencode 'inventoryTypeID=2' \
  --data-urlencode 'bidAmountInSmallestUnit=10000' \
  --data-urlencode 'currencyCode=USD' \
  --data-urlencode 'dateTimeRangeStart=2022-08-01 00:00:00' \
  --data-urlencode 'dateTimeRangeEnd=2026-06-25 06:57:13' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true on success
POST

/v1/portfolio/set_rename_order_list

#
Rename order list

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
orderListID string Gerekli ID of the order list that should be renamed [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
newName string Gerekli The new name of the list
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_rename_order_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'orderListID={{orderListID}}' \
  --data-urlencode 'newName=My Summer Plans' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true on success
POST

/v1/portfolio/set_revoke_calendar_feed_tokens

#
Revokes every active calendar-feed token for the viewer. Use this when the user clicks "Regenerate URL" in the Sync sheet — call mint after to issue a fresh one.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
isWritingRequest bool İsteğe Bağlı false Required by the apiv1 write contract.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_revoke_calendar_feed_tokens' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ revoked: }
POST

/v1/portfolio/set_suggest_list_to_user

#
Returns the order list that has been used last by the user

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_suggest_list_to_user' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias={{userAlias}}'

Dönüşler

string

userAlias this list should be suggested to.
POST

/v1/portfolio/set_unarchive_my_travel_plan

#
Restores an owned archived reservation from v2 My Plans. The plan returns to its most recent non-archived status when that status is still supported by My Plans; otherwise it falls back to Private.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
appointmentID int Gerekli Archived appointment ID to restore.
isWritingRequest bool İsteğe Bağlı false Required true to restore.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_unarchive_my_travel_plan' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appointmentID=251019' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Restore status and appointment id.
POST

/v1/portfolio/set_unlock_private_appointment

#
Unlocks a private reservation for personal use from v2 My Plans. Unlocking reveals the exact start time and confirmation details. After a reservation is unlocked, resale must go through the regular offer and review process again.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
appointmentID int Gerekli Private appointment ID to unlock.
isWritingRequest bool İsteğe Bağlı false Required true to unlock.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_unlock_private_appointment' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appointmentID=251019' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Unlock status and appointment id.
POST

/v1/portfolio/set_update_order_list_item_quantity

#
Updates the quantity of an item

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
orderListItemID int Gerekli ID of the order list item that should be deleted
quantity int Gerekli the desired quantity of the order list item
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/portfolio/set_update_order_list_item_quantity' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'orderListItemID={{orderListItemID}}' \
  --data-urlencode 'quantity={{quantity}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

int

the new subtotal of the order list line item

/v1/bid/

Manages all bid related functions

GET

/v1/bid/get_list

#
Returns all available bids with a reporting delay of 5 minutes.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
creatorUserAlias string İsteğe Bağlı (empty string) Alias of user who created the bids, if empty all bids will be returned [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
locationAlias string İsteğe Bağlı (empty string) locationAlias if this item is a bid. Slug found after the slash when opening a location in the portal
pageSize int İsteğe Bağlı 5000 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/bid/get_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'creatorUserAlias=ColorfulRod45' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList
GET

/v1/bid/get_pickup_requirements

#
Returns the seller pickup state and confirmation data for one bid.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidID int Gerekli numeric bid ID
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/bid/get_pickup_requirements' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}'

Dönüşler

NestedKeyValueList
POST

/v1/bid/set

#
Places a bid Please note that users are required to hold the API Developer medal to access automated buying. A minimum balance of $50 per automatically purchased listings that have not passed by at least 72 hours is required to cover for no-show refunds. Example: If 100 listings for the next 30 days have been purchased the users main account must reflect an available balance (which can be a combination of credit limit and balance) of at least $5,000 to cover for no show refunds. use /v1/account/set_add_funds to programatically fund your account

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
fundingAccountID int Gerekli ID of the account that will fund the bid, accountIDs can be found in /v1/account/get_list
returnToAccountID int Gerekli ID of the account that a bid amount shall be returned to if it is cancelled. If 0 it will be returned to the users Main Account. accountIDs can be found in /v1/account/get_list
bidAmount int Gerekli bid amount in smallest currency unit
sendPublishingMessages bool Gerekli Defines if bid is being published with push messages and emails, if set to false a reduced publishing fee applies.
isPremium bool Gerekli Defines if this is a premium publishing bid
locationAlias string Gerekli Slug found after the slash when opening a location in the portal
orderListID string Gerekli If this bid is part of an orderList, set the ID here.
inventoryTypeID int Gerekli inventoryTypeID found in /v1/location/get_inventory_types
numberTimeRangeUnits int Gerekli Default is 1 - if this is a bid for multiple days such as a hotel stay or a boat slip specify the number of days.
dateTimeRangeStart string Gerekli Time Range Start Date, will be ignored if empty format: YYYY-MM-DD HH:MM:SS
dateTimeRangeEnd string Gerekli Time Range End Date, will be ignored if empty format: YYYY-MM-DD HH:MM:SS
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bid/set' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'fundingAccountID={{fundingAccountID}}' \
  --data-urlencode 'returnToAccountID={{returnToAccountID}}' \
  --data-urlencode 'bidAmount={{bidAmount}}' \
  --data-urlencode 'sendPublishingMessages={{sendPublishingMessages}}' \
  --data-urlencode 'isPremium={{isPremium}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'orderListID={{orderListID}}' \
  --data-urlencode 'inventoryTypeID=2' \
  --data-urlencode 'numberTimeRangeUnits=1' \
  --data-urlencode 'dateTimeRangeStart=2026-06-26 18:00:00' \
  --data-urlencode 'dateTimeRangeEnd=2026-06-26 19:00:00' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

array

returns the bidID of the newly placed bid
POST

/v1/bid/set_cancel

#
Cancels an active bid

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidID int Gerekli bidID returned by /v1/bid/set and /v1/bid/get_list functions
Bid must be created by acting API User and must not be held by another user
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bid/set_cancel' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList
POST

/v1/bid/set_drop

#
Release a bid currently held by the acting seller.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidID int Gerekli numeric bid ID
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bid/set_drop' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool
POST

/v1/bid/set_feedback

#
Send seller feedback for a bid, such as no connection or bid too low.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidID int Gerekli numeric bid ID
reason string İsteğe Bağlı no_connection one of no_connection, bid_too_low, short_list, un_short_list
suggestedAmount int İsteğe Bağlı 0 optional replacement amount for bid_too_low
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bid/set_feedback' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'reason=no_connection' \
  --data-urlencode 'suggestedAmount={{suggestedAmount}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList
POST

/v1/bid/set_move_ownership

#
Give a Bid to Another User This function lets an eligible sponsor pass a held bid to one of their approved Concierge medal teammates. If your contact is not on AT yet:
send them your sponsor link in My Sponsorships->Copy Sponsor Link Once their Concierge medal sponsorship is approved, they become an eligible teammate for this handoff. However, please remember that your bid-fill rate will be impacted if the user does not fill the bid, also your refund rate will be impacted if the bid fill results in a refund, so only give a bid to a user you trust.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidUUID string Gerekli AppointmentTrader Bid ID
userAlias string Gerekli Approved Concierge medal teammate who should receive this bid [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bid/set_move_ownership' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidUUID=AC2K4K2Z' \
  --data-urlencode 'userAlias=ColorfulRod45' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if user was successfully given access to the api users account, return the variable grantedToUserAlias containing the granted to user alias
POST

/v1/bid/set_note

#
Save the acting seller's private note for a bid.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidID int Gerekli numeric bid ID
note string Gerekli private seller note
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bid/set_note' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'note={{note}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool
POST

/v1/bid/set_pickup

#
Pick up and hold a bid for the acting seller.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidID int Gerekli numeric bid ID
isInstantFill bool İsteğe Bağlı false true when the seller is already filling immediately
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bid/set_pickup' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'isInstantFill={{isInstantFill}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList
POST

/v1/bid/set_reservation_contact

#
Saves the bidder-specified reservation contact details for an active bid.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidID int Gerekli bidID returned by /v1/bid/set and /v1/bid/get_list functions
reservationName string Gerekli Name the reservation should be made under
phoneNumber string İsteğe Bağlı (empty string) Phone number the reservation should be made under
emailAddress string İsteğe Bağlı (empty string) Email address the reservation should be made under
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bid/set_reservation_contact' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'reservationName=Jane Doe' \
  --data-urlencode 'phoneNumber=+1 702 555 1234' \
  --data-urlencode 'emailAddress=jane@example.com' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList
POST

/v1/bid/set_shortlist

#
Shortlist or un-shortlist a bid for the acting seller.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidID int Gerekli numeric bid ID
isShortlisted bool İsteğe Bağlı true true to shortlist, false to remove from shortlist
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/bid/set_shortlist' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'isShortlisted={{isShortlisted}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

/v1/reservation/

Native v2 reservation detail, share, and review endpoints.

GET

/v1/reservation/get_detail

#
Returns a native v2 reservation payload for the acting viewer. Public-by-design: anonymous share links reveal teaser metadata only; exact reservation details require sign-in.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingUUID string İsteğe Bağlı (empty string) Reservationlisting UUID.
sharecode string İsteğe Bağlı (empty string) Share code from share{code}.
reviewMode bool İsteğe Bağlı false Include reviewer context when the acting user can review this reservation.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/reservation/get_detail' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingUUID=b10a1215-45e5-11f1-9629-bc24112cab16' \
  --data-urlencode 'sharecode=ABC123' \
  --data-urlencode 'reviewMode=false'

Dönüşler

NestedKeyValueList

Reservation detail payload, or a limited anonymous teaser payload when only a share code is supplied.
POST

/v1/reservation/set_accept_sharecode

#
Accepts a share code for the acting signed-in user.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
sharecode string İsteğe Bağlı (empty string) Share code from share{code}.
incognito bool İsteğe Bağlı false If true, validates the share code but does not add the acting user as a shared guest.
isWritingRequest bool İsteğe Bağlı false Must be true to write the share acceptance.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/reservation/set_accept_sharecode' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'sharecode=ABC123' \
  --data-urlencode 'incognito=false' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Accepted reservation ID and native detail URL.
POST

/v1/reservation/set_approve_review

#
Approves a native reservation review for the acting reviewer.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingUUID string İsteğe Bağlı (empty string) Reservationlisting UUID.
isWritingRequest bool İsteğe Bağlı false Must be true to approve the review.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/reservation/set_approve_review' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingUUID=b10a1215-45e5-11f1-9629-bc24112cab16' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Review mutation result.
POST

/v1/reservation/set_begin_review

#
Begins native reservation review for the acting reviewer.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingUUID string İsteğe Bağlı (empty string) Reservationlisting UUID.
isWritingRequest bool İsteğe Bağlı false Must be true to claim the review.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/reservation/set_begin_review' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingUUID=b10a1215-45e5-11f1-9629-bc24112cab16' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Review mutation result.
POST

/v1/reservation/set_cancel_transfer_service

#
Cancels transfer service for the acting buyer's reservation, including transfer work already in progress.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingUUID string İsteğe Bağlı (empty string) Reservationlisting UUID.
isWritingRequest bool İsteğe Bağlı false Must be true to cancel transfer service.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/reservation/set_cancel_transfer_service' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingUUID=b10a1215-45e5-11f1-9629-bc24112cab16' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Transfer cancellation result.
POST

/v1/reservation/set_reject_review

#
Rejects a native reservation review for the acting reviewer.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingUUID string İsteğe Bağlı (empty string) Reservationlisting UUID.
reason string İsteğe Bağlı (empty string) Revision reason for the seller.
respondByDate string İsteğe Bağlı (empty string) Respond-by date.
respondByTime string İsteğe Bağlı (empty string) Respond-by time.
isWritingRequest bool İsteğe Bağlı false Must be true to reject the review.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/reservation/set_reject_review' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingUUID=b10a1215-45e5-11f1-9629-bc24112cab16' \
  --data-urlencode 'reason=Please upload a clearer confirmation screenshot.' \
  --data-urlencode 'respondByDate=2026-06-26' \
  --data-urlencode 'respondByTime=18:00' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Review mutation result.
POST

/v1/reservation/set_request_transfer_service

#
Requests transfer service for the acting buyer's reservation.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingUUID string İsteğe Bağlı (empty string) Reservationlisting UUID.
givenName string İsteğe Bağlı (empty string) First name to put on the reservation.
familyName string İsteğe Bağlı (empty string) Last name to put on the reservation.
isWritingRequest bool İsteğe Bağlı false Must be true to request the transfer.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/reservation/set_request_transfer_service' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingUUID=b10a1215-45e5-11f1-9629-bc24112cab16' \
  --data-urlencode 'givenName=John' \
  --data-urlencode 'familyName=Doe' \
  --data-urlencode 'isWritingRequest=false'

Dönüşler

NestedKeyValueList

Transfer request result.

/v1/auth/

Auth session management endpoints for native v2 account surfaces. These endpoints are authenticated-only. They expose the viewer's active browser sessions, allow a user to remove one session, remove every other session, or remove all sessions. Removing the current browser session clears the ATSession cookie and returns signedOut=true so native v2 clients can hard-navigate into the logged-out shell.

GET

/v1/auth/get_sessions

#
Return the authenticated user's active sessions, with the current browser session marked for display on the native v2 Session Manager.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/auth/get_sessions' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList

{sessions, currentSession, otherSessions, otherSessionCount, signedOut, redirectUrl}
POST

/v1/auth/set_all_sessions_removed

#
Remove every active session owned by the authenticated user, including the current browser session. The browser cookie is expired and the response includes signedOut=true.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
isWritingRequest bool İsteğe Bağlı false Set true to actually remove all sessions.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/auth/set_all_sessions_removed' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{signedOut, redirectUrl}
POST

/v1/auth/set_other_sessions_removed

#
Remove every active session except the current browser session. The viewer remains signed in on this device and receives a refreshed list.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
isWritingRequest bool İsteğe Bağlı false Set true to actually remove other sessions.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/auth/set_other_sessions_removed' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{sessions, currentSession, otherSessions, otherSessionCount, signedOut, redirectUrl}
POST

/v1/auth/set_session_removed

#
Remove one active session owned by the authenticated user. If that session is the current browser session, the browser cookie is expired and the response includes signedOut=true.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
sessionID string Gerekli Session token returned by get_sessions.
isWritingRequest bool İsteğe Bağlı false Set true to actually remove the session.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/auth/set_session_removed' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'sessionID=00000000000000000000000000000000' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{sessions, currentSession, otherSessions, otherSessionCount, signedOut, redirectUrl}

/v1/listing/

Manages portfolio related functions such as price changes and status changes

GET

/v1/listing/get_competing_listings

#
Lists competing listings in a certain timeframe, along with pricing information

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingID string Gerekli unique listing IDs to provide competing listing information for which can be retrieved by /v1/listing/get_portfolio_listings or when creating a new listing with /v1/location/set_listing
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/listing/get_competing_listings' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingID={{listingID}}'

Dönüşler

NestedKeyValueList

Listings which are considered competing, depending on location liquidity determinations will be made differently whether one listing is considered competing to another.
GET

/v1/listing/get_portfolio_listings

#
Legacy alias for /v1/portfolio/get_listings

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
getPopularityScoreBracket bool İsteğe Bağlı false if true, the popularity score for all listings will be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/listing/get_portfolio_listings' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'getPopularityScoreBracket={{getPopularityScoreBracket}}'

Dönüşler

NestedKeyValueList

The listingID returned in this list can be used to handle listing status in other portfolio functions, such as:
/v1/listing/set_price
/v1/listing/set_market_visibility
/v1/listing/get_competing_listings
POST

/v1/listing/set_archive

#
Archive Listing

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingUUID string Gerekli Unique listing ID that can be retrieved by /v1/listing/get_portfolio_listings or /v1/location/set_listing [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_archive' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingUUID={{listingUUID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

Returns true if successful
POST

/v1/listing/set_begin_transfer

#
Start working on a transfer-service listing.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingID string Gerekli unique listing ID that can be retrieved by /v1/listing/get_portfolio_listings
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_begin_transfer' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList
POST

/v1/listing/set_cancel_bid

#
Cancels a bid

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
bidID int Gerekli unique bid ID
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_cancel_bid' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID=123' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if price change was successful
POST

/v1/listing/set_cancel_transfer_service

#
Cancel transfer service for a seller-owned listing.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingID string Gerekli unique listing ID that can be retrieved by /v1/listing/get_portfolio_listings
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_cancel_transfer_service' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList
POST

/v1/listing/set_complete_transfer

#
Mark a transfer-service listing as successfully transferred.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingID string Gerekli unique listing ID that can be retrieved by /v1/listing/get_portfolio_listings
givenName string Gerekli first name now on the reservation
familyName string Gerekli last name now on the reservation
dynamicFieldsJson string İsteğe Bağlı (empty string) optional JSON object of location field id to value
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_complete_transfer' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'givenName={{givenName}}' \
  --data-urlencode 'familyName={{familyName}}' \
  --data-urlencode 'dynamicFieldsJson={{dynamicFieldsJson}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList
POST

/v1/listing/set_create_from_template

#
Creates an appointment from a template, only appointments owned by api user may be copied.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
templateListingID string Gerekli unique listing ID which can be retrieved by /v1/listing/get_portfolio_listings or when creating a new listing with /v1/location/set_listing
publishListing bool İsteğe Bağlı false if true, the listing will be published to the market, if false it will be taken private
bidID int İsteğe Bağlı -1 if set the listing will attempted to be linked to the provided bid id - will not be linked if the bid does not match the listing parameters, and only works if parameter publishListing is true
discardTemplateListing bool İsteğe Bağlı false defines whether the template listing should be discarded after it has been copied
priceAmountInSmallestUnit int İsteğe Bağlı -1 optional asking price for the copied listing in the smallest possible currency unit, for example USD 150 would be 15000
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_create_from_template' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'templateListingID={{templateListingID}}' \
  --data-urlencode 'publishListing=false' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'discardTemplateListing={{discardTemplateListing}}' \
  --data-urlencode 'priceAmountInSmallestUnit=15000' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

returns the listingUUID of the new listing if successful
POST

/v1/listing/set_delete_review

#
Take a listing out of review and delete it.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingUUID string Gerekli Unique listing ID that can be retrieved by /v1/listing/get_portfolio_listings or /v1/location/set_listing [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_delete_review' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingUUID={{listingUUID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Deleted listing details
POST

/v1/listing/set_fail_transfer

#
Mark a transfer-service listing as failed.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingID string Gerekli unique listing ID that can be retrieved by /v1/listing/get_portfolio_listings
failedOption string Gerekli Unlock if the buyer can still use the listing, Failed otherwise
reason string Gerekli transfer failure note
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_fail_transfer' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'failedOption=Unlock' \
  --data-urlencode 'reason={{reason}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList
POST

/v1/listing/set_fill_bid

#
Fills a bid with a portfolio bid answer that is either off market or publicly available to fill a bid with a new bid answer please use /v1/location/set_listing

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingID string Gerekli unique listing ID which can be retrieved by /v1/listing/get_portfolio_listings or when creating a new listing with /v1/location/set_listing
bidID int Gerekli if set the listing will attempted to be linked to the provided bid id - will not be linked if the bid does not match the listing parameters
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
outsideRequestedTimeframeAcknowledged bool İsteğe Bağlı false Set true only after the seller accepts the out-of-timeframe bid answer warning.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_fill_bid' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}' \
  --data-urlencode 'outsideRequestedTimeframeAcknowledged={{outsideRequestedTimeframeAcknowledged}}'

Dönüşler

bool

returns the listingUUID of the new listing if successful
POST

/v1/listing/set_market_visibility

#
Changes the visibility in the market. In the portal private listings appear in the private section and public in 'Publicly traded listings'

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingID string Gerekli unique listing ID which can be retrieved by /v1/listing/get_portfolio_listings or when creating a new listing with /v1/location/set_listing
publishListing bool Gerekli if true, the listing will be published to the market, if false it will be taken private
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_market_visibility' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'publishListing=false' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if status change was successful
POST

/v1/listing/set_price

#
Changes the current listing price

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingID string Gerekli unique listing ID which can be retrieved by /v1/listing/get_portfolio_listings or when creating a new listing with /v1/location/set_listing
priceAmountInSmallestUnit int Gerekli Smallest possible currency unit, for example USD 100 would be 10000 (usd-cents), amounts will be rounded to next 5 increment.
Refer to the MetaInformation of the return object of /v1/location/get_comparable_trades for pricing information. Endpoint will also return if there is an available bid - if available bid price is matched in your upload, bid will automatically be filled.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_price' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'priceAmountInSmallestUnit=10000' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if price change was successful
POST

/v1/listing/set_purchase

#
Purchase a listing

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
fundingAccountID int Gerekli ID of the account that will fund the bid, accountIDs can be found in /v1/account/get_list
listingID string Gerekli the unique listing ID that shall be purchased
orderListID string İsteğe Bağlı (empty string) If this bid is part of an orderList, set the ID here.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_purchase' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'fundingAccountID={{fundingAccountID}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'orderListID={{orderListID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

returns true if the purchase was successful
POST

/v1/listing/set_unarchive

#
Restore an archived listing to its previous market visibility.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingUUID string Gerekli Unique listing ID that can be retrieved by /v1/listing/get_portfolio_listings or /v1/location/set_listing [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_unarchive' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingUUID={{listingUUID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Restored listing status details
POST

/v1/listing/set_update

#
Updates an off-market seller listing using the same structured listing fields as the v2 listing composer.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
listingID string Gerekli unique listing ID which can be retrieved by /v1/listing/get_portfolio_listings or when creating a new listing with /v1/location/set_listing
locationAlias string Gerekli Slug found after the slash when opening a location in the portal
inventoryTypeID int Gerekli inventoryTypeID found in /v1/location/get_inventory_types
priceAmountInSmallestUnit int Gerekli Smallest possible currency unit, for example USD 100 would be 10000 (usd-cents).
currencyCode string Gerekli 3 digit currency code, currently all prices will be converted to USD and rounded
dateTime string Gerekli Date and Time of listing.
Date format: YYYY-MM-DD HH:MM:SS
firstName string Gerekli First name of listing
lastName string Gerekli Last name of listing
emailAddress string Gerekli Email address associated with the listing
phoneNumber string Gerekli Phone number associated with the listing
locationCategoryFieldIDValueList array Gerekli Refer to /v1/location/get_category to identify the required and optional field list for the location you are submitting for.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
resubmitRejectedListing bool İsteğe Bağlı false Set true when fixing a rejected listing and resubmitting it for review.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/listing/set_update' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'locationAlias=example-venue' \
  --data-urlencode 'inventoryTypeID=2' \
  --data-urlencode 'priceAmountInSmallestUnit=10000' \
  --data-urlencode 'currencyCode=USD' \
  --data-urlencode 'dateTime=2026-06-26 18:15:00' \
  --data-urlencode 'firstName={{firstName}}' \
  --data-urlencode 'lastName={{lastName}}' \
  --data-urlencode 'emailAddress={{emailAddress}}' \
  --data-urlencode 'phoneNumber=+1 605 555 8881' \
  --data-urlencode 'locationCategoryFieldIDValueList=[{"fieldID":"2", "fieldValue":"https://your.webhosting.provider/path/image.jpg"}, {"fieldID":"11", "fieldValue":"Patio Seating"}]' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}' \
  --data-urlencode 'resubmitRejectedListing={{resubmitRejectedListing}}'

Dönüşler

NestedKeyValueList

Updated listing details

/v1/floorplan/

Community-built floorplan layer. A floorplan is a venueevent interior map (`ATFloorplans` -> `ATFloorplanFloors` -> `ATFloorplanLayouts` -> `ATFloorplanAreas`). Community members draw the walls and furniture in-browser; the resulting areas can be tagged on `ATLocation.ATFloorplanArea_ID` or `ATLocationEvents.ATFloorplanArea_ID`, and trades that settle against tagged venues pay the floorplan creator a royalty (handled in `eventsontransactionstatechangecommission.php`). Architecture vs. furniture: each floor stores an `ArchitectureSVG` text blob for the bits that don't change (walls, columns, restrooms) and one or more `ATFloorplanLayouts` rows for the bits that DO (tables, sections, patio seating). Exactly one layout per floor is `Status='Active'` at any given moment; older Active layouts flip to `Historical` when a new one goes live, so attribution still resolves for past appointments. Composer integration is intentionally deferred to a follow-up; v1 ships with a direct creation entry point (`set_new`) callable from the gallery page or any other surface. Every new floorplan links directly to an `ATLocation_ID`, an `ATLocationEvent_ID`, or both. Auth: `set_` writes require `Permission::CanCreateFloorplan`, ownership, or `Permission::CanReviewFloorplanSubmissions` depending on the action. Reads of an Active floorplan are public so consuming surfaces can render it without auth.

GET

/v1/floorplan/get_by_id

#
Returns one floorplan by ID with all floors, layouts, and areas hydrated. Used by the editor JS to refresh state after a write. Public-by-design: the floorplan tree itself isn't sensitive (the editor surface gates its own write actions via permissions).

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATFloorplan_ID int Gerekli Floorplan to fetch.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/floorplan/get_by_id' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID=1'

Dönüşler

NestedKeyValueList

{ floorplan: {...} | null }
GET

/v1/floorplan/get_floor

#
Single-floor detail (architecture SVG + the floor's Active layout with all areas). Used by the editor when switching between floors. Public-by-design: same rationale as `get_for_location`.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATFloorplanFloor_ID int Gerekli Floor row ID.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/floorplan/get_floor' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplanFloor_ID=7'

Dönüşler

NestedKeyValueList

{ floor: {...} | null }
GET

/v1/floorplan/get_for_event

#
Returns Active floorplans linked to an `ATLocationEvents` row via `ATFloorplans.ATLocationEvent_ID`. Public-by-design: floorplans are reused across modules and apps; no sensitive content lives on this surface.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATLocationEvent_ID int Gerekli Event to fetch floorplans for.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/floorplan/get_for_event' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATLocationEvent_ID=11'

Dönüşler

NestedKeyValueList

{ floorplans: [...] }
GET

/v1/floorplan/get_for_location

#
Returns the Active floorplans linked to an `ATLocation` via the direct `ATFloorplans.ATLocation_ID` column, with all floors, the currently- Active layout per floor, and every area on that layout. Returns an empty list (still wrapped in Success) when no Active floorplan covers the venue. Multiple floorplans may cover the same venue (different creators, different perspectives). Consuming surfaces typically render the first Active result; finer attribution comes via the area-level tag `ATLocation.ATFloorplanArea_ID`. Public-by-design: floorplans are reused across modules and apps; no sensitive content lives on this surface.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATLocation_ID int Gerekli Location to fetch floorplans for.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/floorplan/get_for_location' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATLocation_ID=42'

Dönüşler

NestedKeyValueList

{ floorplans: [...] }
GET

/v1/floorplan/get_license_for_app

#
License lookup for a (floorplan, app) pair. Resolution order: 1. Per-app override row in `ATFloorplanLicenses` (Status='Active'). 2. Wildcard row (`ATApps_ID IS NULL`, Status='Active'). 3. Fall through to the `Permission::FloorplanAreaTradeRoyaltyPct` default for the floorplan originator. Public-by-design: app renderers can inspect published floorplan terms.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATFloorplan_ID int Gerekli Floorplan to look up.
ATApps_ID int İsteğe Bağlı 0 App requesting the data; pass 0 for first-party.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/floorplan/get_license_for_app' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID=1' \
  --data-urlencode 'ATApps_ID={{ATApps_ID}}'

Dönüşler

NestedKeyValueList

{ royaltyPct: float, flatFeeCents: int, source: 'app'|'wildcard'|'default' }
GET

/v1/floorplan/get_pending_review_list

#
Moderation queue: floorplans waiting for review. Gated by `Permission::CanReviewFloorplanSubmissions`.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
resultLimit int İsteğe Bağlı 50 Max rows to return.
resultOffset int İsteğe Bağlı 0 Pagination offset.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/floorplan/get_pending_review_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'resultLimit=50' \
  --data-urlencode 'resultOffset={{resultOffset}}'

Dönüşler

NestedKeyValueList

{ items: [...] }
POST

/v1/floorplan/set_approved

#
Approve a Submitted floorplan, promoting it to Active. Floorplans are not exclusive per venueevent -- multiple Active floorplans may share the same direct link -- so no supersede pass runs at this layer; the moderator can manually mark an older floorplan as Superseded if a true replacement is intended. Gated by `Permission::CanReviewFloorplanSubmissions`.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATFloorplan_ID int Gerekli Floorplan to approve.
isWritingRequest bool İsteğe Bağlı false Set true to actually transition.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/floorplan/set_approved' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID=1' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ Status: string }
POST

/v1/floorplan/set_areas

#
Replace every area on a layout with the supplied list. The whole-list replace is intentional: the editor sends its current state, the server is the single source of truth on disk. Existing areas are soft-deleted (`DeletedDate=NOW()`) and the supplied rows are inserted fresh; this preserves historical attribution because the old area IDs aren't reused, but tagged ATLocationATLocationEvent rows pointing at deleted areas will need re-tagging by the operator.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATFloorplanLayout_ID int Gerekli Layout to replace areas on.
areas array Gerekli Array of {label, category, svgShape, svgGeometry, capacity?, desirabilityScore?, sortOrder?} objects. The dispatcher accepts a JSON-encoded array on the wire (e.g. via the `areas` POST field) and auto-decodes it.
isWritingRequest bool İsteğe Bağlı false Set true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/floorplan/set_areas' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplanLayout_ID=1' \
  --data-urlencode 'areas=[{"label":"Window 4","category":"table","svgShape":"rect","svgGeometry":"{\"x\":50,\"y\":80,\"w\":100,\"h\":60}"}]' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ areaIDs: [int, ...] }
POST

/v1/floorplan/set_event_area

#
Tag an `ATLocationEvent` with a floorplan area. Same gate as `set_location_area`.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATLocationEvent_ID int Gerekli Event to tag.
ATFloorplanArea_ID int Gerekli Area to bind (0 to clear).
isWritingRequest bool İsteğe Bağlı false Set true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/floorplan/set_event_area' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATLocationEvent_ID=11' \
  --data-urlencode 'ATFloorplanArea_ID=7' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

true
POST

/v1/floorplan/set_floor

#
Upsert a floor (architecture SVG, viewbox, name, order). Pass ATFloorplanFloor_ID = 0 to create a new floor under the supplied floorplan; non-zero updates the existing row. Architecture SVG is sanitised before write so user-pasted blobs can't smuggle scripts.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATFloorplan_ID int Gerekli Owner floorplan; required when creating.
ATFloorplanFloor_ID int Gerekli 0 to create, or existing row ID to update.
name string Gerekli Floor display name.
floorOrder int İsteğe Bağlı 0 -2..N ordering hint (-2 = sub-basement, 0 = ground).
viewBoxWidth int İsteğe Bağlı 1000 SVG viewbox width.
viewBoxHeight int İsteğe Bağlı 1000 SVG viewbox height.
architectureSVG string İsteğe Bağlı (empty string) Raw SVG fragment for the building shell; sanitised server-side.
backgroundImageURL string İsteğe Bağlı (empty string) Optional traced reference photo URL.
isWritingRequest bool İsteğe Bağlı false Set true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/floorplan/set_floor' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID=1' \
  --data-urlencode 'ATFloorplanFloor_ID={{ATFloorplanFloor_ID}}' \
  --data-urlencode 'name=Mezzanine' \
  --data-urlencode 'floorOrder=1' \
  --data-urlencode 'viewBoxWidth=1000' \
  --data-urlencode 'viewBoxHeight=1000' \
  --data-urlencode 'architectureSVG=&lt;g&gt;&lt;rect x="0" y="0" width="1000" height="20"&gt;&lt;/rect&gt;&lt;/g&gt;' \
  --data-urlencode 'backgroundImageURL={{backgroundImageURL}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ ATFloorplanFloor_ID: int }
POST

/v1/floorplan/set_imported_svg

#
Import a pasteduploaded SVG fragment as the architecture layer of a floor. The fragment is sanitised server-side: script elements, event handlers (onload, onclick, ...), foreignObject elements, external references, and unsafe URL schemes are stripped before write. Optional autoExtractAreas mode walks the cleaned tree for rect, polygon, circle, and path elements that carry either a title child or a data-atv2-label attribute, and inserts each into the floor's currently-Active layout as a draft area, ready for the creator to assign categories to.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATFloorplanFloor_ID int Gerekli Floor to land the architecture on.
svgFragment string Gerekli The SVG text. May or may not have an outer svg element.
autoExtractAreas bool İsteğe Bağlı false True to also create draft areas from titled shapes.
isWritingRequest bool İsteğe Bağlı false Set true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/floorplan/set_imported_svg' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplanFloor_ID=1' \
  --data-urlencode 'svgFragment=&lt;g&gt;&lt;rect x="0" y="0" width="100" height="50"&gt;&lt;title&gt;Bar&lt;/title&gt;&lt;/rect&gt;&lt;/g&gt;' \
  --data-urlencode 'autoExtractAreas=false' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ extractedAreaCount: int, sanitisedBytes: int }
POST

/v1/floorplan/set_layout

#
Upsert a layout. Pass `ATFloorplanLayout_ID = 0` to create a new layout under the supplied floor; non-zero updates the existing row. When the resulting status is `Active`, ANY other Active layout on the same floor flips to `Historical` in the same write -- there can be exactly one Active layout per floor at a time.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATFloorplanFloor_ID int Gerekli Owner floor; required when creating.
ATFloorplanLayout_ID int Gerekli 0 to create, or existing row ID to update.
name string Gerekli Layout display name.
statusValue string İsteğe Bağlı Draft One of Draft, Active, Historical.
effectiveStartDate string İsteğe Bağlı (empty string) Optional ISO datetime.
effectiveEndDate string İsteğe Bağlı (empty string) Optional ISO datetime.
isWritingRequest bool İsteğe Bağlı false Set true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/floorplan/set_layout' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplanFloor_ID=1' \
  --data-urlencode 'ATFloorplanLayout_ID={{ATFloorplanLayout_ID}}' \
  --data-urlencode 'name=Summer terrace' \
  --data-urlencode 'statusValue=Active' \
  --data-urlencode 'effectiveStartDate={{effectiveStartDate}}' \
  --data-urlencode 'effectiveEndDate={{effectiveEndDate}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ ATFloorplanLayout_ID: int }
POST

/v1/floorplan/set_location_area

#
Tag an `ATLocation` with a floorplan area so trades against that venue inherit area attribution for royalty purposes. Gated either by floorplan ownership OR `Permission::LocationAdministration`.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATLocation_ID int Gerekli Venue to tag.
ATFloorplanArea_ID int Gerekli Area to bind to this venue (0 to clear).
isWritingRequest bool İsteğe Bağlı false Set true to actually persist.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/floorplan/set_location_area' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATLocation_ID=42' \
  --data-urlencode 'ATFloorplanArea_ID=7' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

true
POST

/v1/floorplan/set_new

#
Direct creation entry point. Transactionally creates an ATFloorplans row (Draft), plus an initial ATFloorplanFloor ("Ground") and an initial ATFloorplanLayout ("Default", Active) so the editor has somewhere to draw immediately. Gated by `Permission::CanCreateFloorplan`. At least one of `ATLocation_ID` or `ATLocationEvent_ID` is required. Both may be supplied.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
name string Gerekli Display name for the floorplan.
ATLocation_ID int İsteğe Bağlı 0 Optional venue link.
ATLocationEvent_ID int İsteğe Bağlı 0 Optional event link.
isWritingRequest bool İsteğe Bağlı false Set true to actually create. Defaults false (dry-run).
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/floorplan/set_new' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'name=Joe'\''s Bar Floorplan' \
  --data-urlencode 'ATLocation_ID=42' \
  --data-urlencode 'ATLocationEvent_ID={{ATLocationEvent_ID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ ATFloorplan_ID: int, ATFloorplanFloor_ID: int, ATFloorplanLayout_ID: int, editorURL: string }
POST

/v1/floorplan/set_rejected

#
Reject a Submitted floorplan with a reviewer note. Gated by `Permission::CanReviewFloorplanSubmissions`.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATFloorplan_ID int Gerekli Floorplan to reject.
reason string İsteğe Bağlı (empty string) Short note for the originator.
isWritingRequest bool İsteğe Bağlı false Set true to actually transition.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/floorplan/set_rejected' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID=1' \
  --data-urlencode 'reason=Mezzanine area count looks off, please re-check' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ Status: string }
POST

/v1/floorplan/set_submitted_for_review

#
Move a Draft floorplan into the moderation queue. Owner-only.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
ATFloorplan_ID int Gerekli Floorplan to submit.
isWritingRequest bool İsteğe Bağlı false Set true to actually transition.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/floorplan/set_submitted_for_review' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID=1' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ Status: string }

/v1/appsv2/

V2 appstore - list, create, configure, and purchase iframe-hosted apps. Distinct from v1apps (the legacy `\AT\ATApps` dev-platform model for externally-hosted developer apps with private keys). The `appsv2` namespace covers the v2 iframe app shell (\AT\ATAppsV2, modulesv2_app_host), backed by the `ATAppsV2` table for user-created entries plus the static manifests in configatv2-apps.php for first-party shells.

GET

/v1/appsv2/get_about_post_candidates

#
Finds public community posts that can be selected as an app's About my app post. Eligibility mirrors the profileAbout Me selector.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) Search text for public top-level posts with image media by title, body, or author alias.
postID int İsteğe Bağlı 0 Exact ATDiscussionPosts.ID to preview.
pageSize int İsteğe Bağlı 8 Maximum candidates to return for text search.
ownPostsOnly bool İsteğe Bağlı false When true, only return public image-media posts authored by the current API user.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/appsv2/get_about_post_candidates' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter=great seller' \
  --data-urlencode 'postID=1436696' \
  --data-urlencode 'pageSize=8' \
  --data-urlencode 'ownPostsOnly=false'

Dönüşler

NestedKeyValueList

{ Candidates: [{ id, title, bodyPreview, url, author, board, imageMediaCount, media }], Page: { pageSize } }
GET

/v1/appsv2/get_checkout_url

#
Returns an inline custom-article checkout URL for paid app access.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
appID int Gerekli ATAppsV2.ID of the paid app.
returnURL string İsteğe Bağlı (empty string) Optional same-host URL to return to after checkout.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/appsv2/get_checkout_url' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appID=42' \
  --data-urlencode 'returnURL=appstrip-planner'

Dönüşler

NestedKeyValueList

{ checkoutUrl: string, app: {...} }
GET

/v1/appsv2/get_list

#
Returns the list of published user-created apps for the appstore. Public-by-design: the appstore is a public browse surface; paid apps only expose storefront metadata here, while app access is enforced by modulesv2_app_host and \AT\ATAppsV2::ViewerCanAccess().
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/appsv2/get_list' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

NestedKeyValueList

{ apps: [ { id, dbID, slug, name, description, icon, entryUrl, pricing, access } ] }
GET

/v1/appsv2/get_my_apps

#
Returns apps owned by the current viewer for the App Store setup UI.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
aboutPostID int İsteğe Bağlı 0 Optional post ID used by the newsfeed action to mark which owned apps already use that post.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/appsv2/get_my_apps' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'aboutPostID=1436696'

Dönüşler

NestedKeyValueList

{ apps: [ { id, dbID, slug, name, description, pricing, aboutPostID, selectedForPost } ] }
POST

/v1/appsv2/set_about_post

#
Sets or clears an app's About my app post.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
appID int Gerekli ATAppsV2.ID of an app owned by the current user.
postID int İsteğe Bağlı 0 Public ATDiscussionPosts.ID with at least two attached images. Pass 0 to clear.
isWritingRequest bool İsteğe Bağlı false Set true to actually persist the app.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/appsv2/set_about_post' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appID=42' \
  --data-urlencode 'postID=1436696' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ app: {...}, postID: int }
POST

/v1/appsv2/set_create

#
Create a new user-published app row in the v2 appstore.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
name string Gerekli Display name shown in the appstore card and the host shell.
slug string Gerekli Lowercase URL slug ([a-z0-9-]+, 2-64 chars).
entry_url string Gerekli Absolute http(s) URL or root-relative path loaded into the sandboxed iframe.
description string İsteğe Bağlı (empty string) Optional short description shown on the appstore card.
icon string İsteğe Bağlı (empty string) Optional sprite reference (e.g. "i-trending-bars"). Empty string allowed.
pricingType string İsteğe Bağlı Free One of Free, MonthlyUSD, YearlyUSD, MonthlyTraderpoints, YearlyTraderpoints.
priceAmount int İsteğe Bağlı 0 Price in USD cents for paid monthlyyearly access.
aboutPostID int İsteğe Bağlı 0 Optional public post ID with at least two images to use as the About my app post.
isWritingRequest bool İsteğe Bağlı false Set true to actually persist the app.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/appsv2/set_create' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'name=Trip Planner' \
  --data-urlencode 'slug=trip-planner' \
  --data-urlencode 'entry_url=https:thirdparty.example.comapp' \
  --data-urlencode 'description=Plan dinner reservations across multiple cities.' \
  --data-urlencode 'icon={{icon}}' \
  --data-urlencode 'pricingType=MonthlyUSD' \
  --data-urlencode 'priceAmount=9900' \
  --data-urlencode 'aboutPostID=1436696' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ id: int, slug: string, app: {...} }
POST

/v1/appsv2/set_update

#
Update a user-owned v2 app's storefront setup.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
appID int Gerekli ATAppsV2.ID of an app owned by the current user.
name string Gerekli Display name shown in the appstore card and the host shell.
entry_url string Gerekli Absolute http(s) URL or root-relative path loaded into the sandboxed iframe.
description string İsteğe Bağlı (empty string) Optional short description shown on the appstore card.
icon string İsteğe Bağlı (empty string) Optional sprite reference (e.g. "i-trending-bars"). Empty string allowed.
pricingType string İsteğe Bağlı Free One of Free, MonthlyUSD, YearlyUSD, MonthlyTraderpoints, YearlyTraderpoints.
priceAmount int İsteğe Bağlı 0 Price in USD cents for paid monthlyyearly access.
aboutPostID int İsteğe Bağlı 0 Optional public post ID with at least two images to use as the About my app post.
isWritingRequest bool İsteğe Bağlı false Set true to actually persist the app.
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/appsv2/set_update' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'appID=42' \
  --data-urlencode 'name=Trip Planner' \
  --data-urlencode 'entry_url=https:thirdparty.example.comapp' \
  --data-urlencode 'description=Plan dinner reservations across multiple cities.' \
  --data-urlencode 'icon={{icon}}' \
  --data-urlencode 'pricingType=MonthlyUSD' \
  --data-urlencode 'priceAmount=9900' \
  --data-urlencode 'aboutPostID=1436696' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

{ app: {...} }

/v1/medal/

Manages All Medal and User Permission Related Functions

GET

/v1/medal/get_achievement_bonus_types

#
Searches all available requirements

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) filter criteria
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/medal/get_achievement_bonus_types' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing Requirements matching the searchquery defined in filter
GET

/v1/medal/get_administration_medal_map

#
Returns the administration medal builder map.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
medalCategorySlug string İsteğe Bağlı (empty string) Optional category slug to load one category.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/medal/get_administration_medal_map' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'medalCategorySlug=community'

Dönüşler

NestedKeyValueList

Medal categories, tier paths, sprite wizard config, and path health.
GET

/v1/medal/get_administration_medal_sprite_ai_suggestion

#
Requests an AI-generated sprite wizard suggestion without writing it.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
medalCategorySlug string Gerekli Category slug.
prompt string İsteğe Bağlı (empty string) Optional admin direction for palette, motif, and hierarchy.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/medal/get_administration_medal_sprite_ai_suggestion' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'medalCategorySlug=community' \
  --data-urlencode 'prompt={{prompt}}'

Dönüşler

NestedKeyValueList

Wizard suggestion JSON for preview.
GET

/v1/medal/get_administration_medal_tier_details

#
Returns requirement and achievement bonus editor data for one medal tier.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userGroupID int İsteğe Bağlı 0 Internal tier usergroup id.
userGroupSlug string İsteğe Bağlı (empty string) Tier slug, used when userGroupID is not supplied.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/medal/get_administration_medal_tier_details' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userGroupID=1' \
  --data-urlencode 'userGroupSlug=connector'

Dönüşler

NestedKeyValueList

Tier metadata, linked requirements, available requirements, achievement bonuses, and bonus types.
GET

/v1/medal/get_available_medal_categories

#
Searches all available medal categories on the platform

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) filter criteria
restrictToSponsorableByUserAlias string İsteğe Bağlı (empty string) if set, only medals that can be sponsored by this userAlias will be returned
filterBy string İsteğe Bağlı Kısa URL adı comma seperated list of fields that should be included
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/medal/get_available_medal_categories' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'restrictToSponsorableByUserAlias={{restrictToSponsorableByUserAlias}}' \
  --data-urlencode 'filterBy={{filterBy}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing Requirements matching the searchquery defined in filter
GET

/v1/medal/get_available_medals

#
Searches all available medals on the platform

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
medalCategorySlug string Gerekli Category Slug Identifying the Medals Type
Important:
Changing the medal category will remove this medal from the current chain and will require reconfiguration of the chain following this medal.
No change if left blank
[clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/medal/get_search_medal_category_by_slug", "EndpointFieldList":{"medal_slug":"_INPUT_"}, "ListConfiguration":{"value":"slug", "description":"description"}}]
searchFilter string İsteğe Bağlı (empty string) filter criteria
filterBy string İsteğe Bağlı Kısa URL adı comma seperated list of fields that should be included
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/medal/get_available_medals' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'medalCategorySlug=community' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'filterBy={{filterBy}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing Requirements matching the searchquery defined in filter
GET

/v1/medal/get_available_permissions

#
Searches all available requirements

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) filter criteria
filterBy string İsteğe Bağlı permissionName comma seperated list of fields that should be included
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/medal/get_available_permissions' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'filterBy={{filterBy}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing Requirements matching the searchquery defined in filter
GET

/v1/medal/get_available_requirements

#
Searches all available requirements

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) filter criteria
filterBy string İsteğe Bağlı Kısa URL adı comma seperated list of fields that should be included
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/medal/get_available_requirements' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'filterBy={{filterBy}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

List containing Requirements matching the searchquery defined in filter
POST

/v1/medal/set_achievement_bonus

#
Create a bonus for the Medal The bonus defined below will be granted to people who achieve the Medal for the first time.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
slug string Gerekli Slug Identifying the Medal
achievementName string Gerekli Title of the Achievement Bonus
achievementDescription string Gerekli Description of the Achievement Bonus
unicodeIcon string Gerekli Unicode Emoji that represents the achievment
value string Gerekli Defines how much of the achievementType is granted on first achievement
achievementType string Gerekli Possible Values:
TraderpointCredit - Grants Trader Points
CurrencyCredit - Grants USD Cents (Value 100 = $1)
UserGroupNotify - Specifies a manual action such as a post on the user forums or an external social media platform, advertising etc.
[clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/medal/get_achievement_bonus_types", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":1}, "ListConfiguration":{"value":"achievementKey"}}]
displayOrderDescending int İsteğe Bağlı 0 Descending display order 100 = top, 0 = bottom
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_achievement_bonus' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'slug={{slug}}' \
  --data-urlencode 'achievementName=100 Traderpoints' \
  --data-urlencode 'achievementDescription=Get a boost on your first reward purchase!' \
  --data-urlencode 'unicodeIcon=✴️' \
  --data-urlencode 'value=100' \
  --data-urlencode 'achievementType=TraderpointCredit' \
  --data-urlencode 'displayOrderDescending={{displayOrderDescending}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

int

Return internal Achievement Bonus ID, if achievement bonus was created successfully.
POST

/v1/medal/set_administration_medal_category

#
Saves category-level medal metadata and wizard defaults.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
medalCategorySlug string Gerekli Category slug.
name string İsteğe Bağlı (empty string) Category display name.
description string İsteğe Bağlı (empty string) Category description.
color string İsteğe Bağlı (empty string) Hex background color.
textColor string İsteğe Bağlı (empty string) Hex text color.
iconURL string İsteğe Bağlı (empty string) Icon URL written to ATUserMedal.Icon.
spriteWizardConfigJSON string İsteğe Bağlı (empty string) JSON wizard config.
spriteWizardPrompt string İsteğe Bağlı (empty string) Latest adminAI prompt.
customOnboardingURL string İsteğe Bağlı (empty string) Optional local onboarding or purchase page URL.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_category' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'medalCategorySlug=community' \
  --data-urlencode 'name=Community' \
  --data-urlencode 'description={{description}}' \
  --data-urlencode 'color=#5267DF' \
  --data-urlencode 'textColor=#FFFFFF' \
  --data-urlencode 'iconURL=cachemedal-spritescommunitycategory.svg' \
  --data-urlencode 'spriteWizardConfigJSON={{spriteWizardConfigJSON}}' \
  --data-urlencode 'spriteWizardPrompt={{spriteWizardPrompt}}' \
  --data-urlencode 'customOnboardingURL=modulesv2trusted_clientindex.php' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Updated administration medal map.
POST

/v1/medal/set_administration_medal_category_create

#
Creates a top-level administration medal category.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
slug string İsteğe Bağlı (empty string) Category slug. When blank, the slug is generated from the name.
name string İsteğe Bağlı (empty string) Category display name.
description string İsteğe Bağlı (empty string) Category description.
color string İsteğe Bağlı (empty string) Hex background color.
textColor string İsteğe Bağlı (empty string) Hex text color.
iconURL string İsteğe Bağlı (empty string) Icon URL written to ATUserMedal.Icon.
spriteWizardConfigJSON string İsteğe Bağlı (empty string) JSON wizard config.
spriteWizardPrompt string İsteğe Bağlı (empty string) Latest adminAI prompt.
customOnboardingURL string İsteğe Bağlı (empty string) Optional local onboarding or purchase page URL.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_category_create' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'slug=community' \
  --data-urlencode 'name=Community' \
  --data-urlencode 'description={{description}}' \
  --data-urlencode 'color=#5267DF' \
  --data-urlencode 'textColor=#FFFFFF' \
  --data-urlencode 'iconURL=cachemedal-spritescommunitycategory.svg' \
  --data-urlencode 'spriteWizardConfigJSON={{spriteWizardConfigJSON}}' \
  --data-urlencode 'spriteWizardPrompt={{spriteWizardPrompt}}' \
  --data-urlencode 'customOnboardingURL=modulesv2trusted_clientindex.php' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Updated administration medal map.
POST

/v1/medal/set_administration_medal_path

#
Saves a medal category path from an ordered low-to-high tier list.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
medalCategorySlug string Gerekli Category slug.
orderedUserGroupIDs string Gerekli JSON array or comma-separated list of tier ids ordered from first tier to top tier.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_path' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'medalCategorySlug=community' \
  --data-urlencode 'orderedUserGroupIDs=[1,2,3]' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Updated administration medal map.
POST

/v1/medal/set_administration_medal_sprite_apply

#
Applies a sprite wizard config by writing deterministic SVG files and medal metadata.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
medalCategorySlug string Gerekli Category slug.
spriteWizardConfigJSON string Gerekli Wizard config JSON.
tierSpriteOverridesJSON string İsteğe Bağlı (empty string) Optional JSON object keyed by tier id or slug.
spriteWizardPrompt string İsteğe Bağlı (empty string) Prompt to persist on the category.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_sprite_apply' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'medalCategorySlug=community' \
  --data-urlencode 'spriteWizardConfigJSON={{spriteWizardConfigJSON}}' \
  --data-urlencode 'tierSpriteOverridesJSON={{tierSpriteOverridesJSON}}' \
  --data-urlencode 'spriteWizardPrompt={{spriteWizardPrompt}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Generated icon URLs and refreshed map.
POST

/v1/medal/set_administration_medal_submedal

#
Saves one submedal's visible metadata and optional sprite override.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userGroupID int İsteğe Bağlı 0 Internal submedal usergroup id.
userGroupSlug string İsteğe Bağlı (empty string) Submedal slug, used when userGroupID is not supplied.
name string İsteğe Bağlı (empty string) Submedal display name.
description string İsteğe Bağlı (empty string) Submedal description.
color string İsteğe Bağlı (empty string) Hex background color.
textColor string İsteğe Bağlı (empty string) Hex text color.
iconURL string İsteğe Bağlı (empty string) Icon URL written to ATUserGroup.Icon.
importance int İsteğe Bağlı 0 Submedal importance.
spriteWizardOverrideJSON string İsteğe Bağlı (empty string) JSON per-submedal sprite override.
recalculateUserImportance bool İsteğe Bağlı false Recalculate cached user importance for all users when the submedal importance changes.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_submedal' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userGroupID=1' \
  --data-urlencode 'userGroupSlug=connector-new-york' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'description={{description}}' \
  --data-urlencode 'color=#5267DF' \
  --data-urlencode 'textColor=#FFFFFF' \
  --data-urlencode 'iconURL={{iconURL}}' \
  --data-urlencode 'importance={{importance}}' \
  --data-urlencode 'spriteWizardOverrideJSON={{spriteWizardOverrideJSON}}' \
  --data-urlencode 'recalculateUserImportance={{recalculateUserImportance}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Updated administration medal map.
POST

/v1/medal/set_administration_medal_submedal_create

#
Creates a horizontal submedal under an exact parent medal tier.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
parentUserGroupID int Gerekli Canonical parent tier usergroup id.
slug string İsteğe Bağlı (empty string) Submedal slug. When blank, the slug is generated from the name.
name string İsteğe Bağlı (empty string) Submedal display name.
description string İsteğe Bağlı (empty string) Submedal description.
color string İsteğe Bağlı (empty string) Hex background color.
textColor string İsteğe Bağlı (empty string) Hex text color.
iconURL string İsteğe Bağlı (empty string) Icon URL written to ATUserGroup.Icon.
importance int İsteğe Bağlı 0 Submedal importance.
spriteWizardOverrideJSON string İsteğe Bağlı (empty string) JSON per-submedal sprite override.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_submedal_create' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'parentUserGroupID=1' \
  --data-urlencode 'slug=connector-new-york' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'description={{description}}' \
  --data-urlencode 'color=#5267DF' \
  --data-urlencode 'textColor=#FFFFFF' \
  --data-urlencode 'iconURL={{iconURL}}' \
  --data-urlencode 'importance={{importance}}' \
  --data-urlencode 'spriteWizardOverrideJSON={{spriteWizardOverrideJSON}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Updated administration medal map.
POST

/v1/medal/set_administration_medal_tier

#
Saves one medal tier's visible metadata and optional sprite override.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userGroupID int İsteğe Bağlı 0 Internal tier usergroup id.
userGroupSlug string İsteğe Bağlı (empty string) Tier slug, used when userGroupID is not supplied.
name string İsteğe Bağlı (empty string) Tier display name.
description string İsteğe Bağlı (empty string) Tier description.
color string İsteğe Bağlı (empty string) Hex background color.
textColor string İsteğe Bağlı (empty string) Hex text color.
iconURL string İsteğe Bağlı (empty string) Icon URL written to ATUserGroup.Icon.
importance int İsteğe Bağlı 0 Tier importance.
spriteWizardOverrideJSON string İsteğe Bağlı (empty string) JSON per-tier sprite override.
recalculateUserImportance bool İsteğe Bağlı false Recalculate cached user importance for all users when the tier importance changes.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_tier' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userGroupID=1' \
  --data-urlencode 'userGroupSlug=connector' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'description={{description}}' \
  --data-urlencode 'color=#5267DF' \
  --data-urlencode 'textColor=#FFFFFF' \
  --data-urlencode 'iconURL={{iconURL}}' \
  --data-urlencode 'importance={{importance}}' \
  --data-urlencode 'spriteWizardOverrideJSON={{spriteWizardOverrideJSON}}' \
  --data-urlencode 'recalculateUserImportance={{recalculateUserImportance}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Updated administration medal map.
POST

/v1/medal/set_administration_medal_tier_achievement_bonus

#
Adds or updates one achievement bonus on a medal tier.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userGroupID int Gerekli Internal tier usergroup id.
achievementBonusID int İsteğe Bağlı 0 Existing bonus id. Leave 0 to create a new bonus.
achievementName string İsteğe Bağlı (empty string) Title of the achievement bonus.
achievementDescription string İsteğe Bağlı (empty string) Description of the achievement bonus.
unicodeIcon string İsteğe Bağlı (empty string) Icon or short symbol shown with the bonus.
value string İsteğe Bağlı (empty string) Defines how much of the achievementType is granted.
achievementType string İsteğe Bağlı (empty string) TraderpointCredit, CurrencyCredit, or UserGroupNotify.
displayOrderDescending int İsteğe Bağlı 0 Descending display order.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_tier_achievement_bonus' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userGroupID=1' \
  --data-urlencode 'achievementBonusID={{achievementBonusID}}' \
  --data-urlencode 'achievementName=100 Traderpoints' \
  --data-urlencode 'achievementDescription={{achievementDescription}}' \
  --data-urlencode 'unicodeIcon={{unicodeIcon}}' \
  --data-urlencode 'value=100' \
  --data-urlencode 'achievementType=TraderpointCredit' \
  --data-urlencode 'displayOrderDescending=100' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Refreshed tier editor data.
POST

/v1/medal/set_administration_medal_tier_achievement_bonus_delete

#
Removes one achievement bonus from a medal tier.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userGroupID int Gerekli Internal tier usergroup id.
achievementBonusID int Gerekli Internal achievement bonus id.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_tier_achievement_bonus_delete' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userGroupID=1' \
  --data-urlencode 'achievementBonusID=1' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Refreshed tier editor data.
POST

/v1/medal/set_administration_medal_tier_create

#
Creates a medal tier inside a top-level medal category.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
medalCategorySlug string Gerekli Category slug.
slug string İsteğe Bağlı (empty string) Tier slug. When blank, the slug is generated from the name.
name string İsteğe Bağlı (empty string) Tier display name.
description string İsteğe Bağlı (empty string) Tier description.
color string İsteğe Bağlı (empty string) Hex background color.
textColor string İsteğe Bağlı (empty string) Hex text color.
iconURL string İsteğe Bağlı (empty string) Icon URL written to ATUserGroup.Icon.
importance int İsteğe Bağlı 0 Tier importance.
spriteWizardOverrideJSON string İsteğe Bağlı (empty string) JSON per-tier sprite override.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_tier_create' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'medalCategorySlug=community' \
  --data-urlencode 'slug=connector' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'description={{description}}' \
  --data-urlencode 'color=#5267DF' \
  --data-urlencode 'textColor=#FFFFFF' \
  --data-urlencode 'iconURL={{iconURL}}' \
  --data-urlencode 'importance={{importance}}' \
  --data-urlencode 'spriteWizardOverrideJSON={{spriteWizardOverrideJSON}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Updated administration medal map.
POST

/v1/medal/set_administration_medal_tier_requirement

#
Adds or updates one auto-grant requirement link on a medal tier.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userGroupID int Gerekli Internal tier usergroup id.
requirementSlug string Gerekli Requirement slug.
value string Gerekli Required threshold value.
requirementLimitType string İsteğe Bağlı Minimum Minimum or Maximum.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_tier_requirement' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userGroupID=1' \
  --data-urlencode 'requirementSlug=places-found' \
  --data-urlencode 'value=50' \
  --data-urlencode 'requirementLimitType=Minimum' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Refreshed tier editor data.
POST

/v1/medal/set_administration_medal_tier_requirement_delete

#
Removes one auto-grant requirement link from a medal tier.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userGroupID int Gerekli Internal tier usergroup id.
requirementValueID int Gerekli Internal requirement link id.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_administration_medal_tier_requirement_delete' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userGroupID=1' \
  --data-urlencode 'requirementValueID=1' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Refreshed tier editor data.
POST

/v1/medal/set_create_medal

#
Create A New Medal
Details can be edited using /v1/medal/set_edit_medal

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
medalCategorySlug string Gerekli Category Slug Identifying the Medals Type
slug string Gerekli Slug that will be identifying the Medal, must be unique accross all medals
name string Gerekli The Medals Name
previousMedalSlug string İsteğe Bağlı (empty string) Slug Identifying the preceeding medal
Leave blank if this is the first medal in a chain. [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/medal/get_available_medals", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "medalCategorySlug":"[clientFieldValueList:medalCategorySlug]"}, "ListConfiguration":{"value":"medalSlug"}}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_create_medal' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'medalCategorySlug=community' \
  --data-urlencode 'slug=super-seller' \
  --data-urlencode 'name=Super Seller' \
  --data-urlencode 'previousMedalSlug=repeat-seller' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

True if medal was created successfully
POST

/v1/medal/set_delete_achievement_bonus

#
Delete the Achievement Bonus
Removes the achievement bonus linked to the medal.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
achievementBonusID int Gerekli Internal ID identifying the Achievement Bonus
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_delete_achievement_bonus' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'achievementBonusID={{achievementBonusID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

True if achievement bonus was removed successfully.
POST

/v1/medal/set_edit_medal

#
Edit Medal

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
slug string Gerekli Slug Identifying the Medal
name string Gerekli The Medals Name
description string Gerekli Short description of key benefits of this medal
iconURL string İsteğe Bağlı (empty string) URL to Medal Icon
color string İsteğe Bağlı (empty string) Main Color of Medal [clientFieldConfiguration:{"Type":"hexColorPicker"}]
textColor string İsteğe Bağlı (empty string) Contrasting text color [clientFieldConfiguration:{"Type":"hexColorPicker"}]
nextMedalSlug string İsteğe Bağlı (empty string) Slug Identifying the next higher medal
Leave blank if this is the highest medal [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/medal/get_available_medals", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "medalCategorySlug":"[clientFieldValueList:medalCategorySlug]"}, "ListConfiguration":{"value":"medalSlug"}}]
medalCategorySlug string İsteğe Bağlı (empty string) Category Slug Identifying the Medals Type
Important:
Changing the medal category will remove this medal from the current chain and will require reconfiguration of the chain following this medal.
No change if left blank
importance int İsteğe Bağlı 0 Importance on a scale from 0 (lowest) - 100 (highest)
newSlug string İsteğe Bağlı (empty string) New Slug for this medal
Slug will not be changed if value is blank
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_edit_medal' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'slug={{slug}}' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'description={{description}}' \
  --data-urlencode 'iconURL=/images/medals/sales_square_green.svg' \
  --data-urlencode 'color=#000000' \
  --data-urlencode 'textColor=#FFFFFF' \
  --data-urlencode 'nextMedalSlug=team-manager' \
  --data-urlencode 'medalCategorySlug=community' \
  --data-urlencode 'importance={{importance}}' \
  --data-urlencode 'newSlug={{newSlug}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

True if update was successful
POST

/v1/medal/set_grant_user_medal

#
Manually grants a medal tier to a user. This is an administrator override: requirements are bypassed, the grant is marked with the acting admin and comment, and automatic ungrant is disabled.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias identifying the user who should receive the medal. [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/user/get", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_", "pageSize":10}, "ListConfiguration":{"value":"userAlias", "description":"userLastSeen"}}]
userGroupID int İsteğe Bağlı 0 Internal usergroup id for the medal tier to grant.
userGroupSlug string İsteğe Bağlı (empty string) Slug for the medal tier to grant. Used when userGroupID is not supplied. [clientFieldConfiguration:{"Type":"AutoCompletion", "Callback":"/v1/medal/get_available_medals", "EndpointFieldList":{"searchFilter":"_CLIENTFIELDVALUE_"}, "ListConfiguration":{"value":"medalSlug", "description":"medalDescription"}}]
comment string İsteğe Bağlı (empty string) Required administrative note explaining the manual grant.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_grant_user_medal' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias=ColorfulRod45' \
  --data-urlencode 'userGroupID=1' \
  --data-urlencode 'userGroupSlug=connector' \
  --data-urlencode 'comment=Manual admin grant' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Granted medal details.
POST

/v1/medal/set_permission_payload

#
Sets a direct permission payload for a usergroup.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userGroupID int İsteğe Bağlı 0 Internal usergroup id.
slug string İsteğe Bağlı (empty string) Slug identifying the usergroup.
permissionID int İsteğe Bağlı 0 Internal permission id.
permissionName string İsteğe Bağlı (empty string) Permission name.
settingPayload string İsteğe Bağlı false Payload value. Values can be true, false, a number, JSON, or any existing permission payload string.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_permission_payload' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userGroupID=1' \
  --data-urlencode 'slug=community' \
  --data-urlencode 'permissionID=1' \
  --data-urlencode 'permissionName=ApproveAppointments' \
  --data-urlencode 'settingPayload=true' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

NestedKeyValueList

Saved permission payload details.
POST

/v1/medal/set_request_medal_sponsorship

#
Request Medal Sponsorship
will be asked to sponsor the medal defined below for you.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
sponsorUserAlias string Gerekli Alias Identifying the User to be sponsored [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
medalCategorySlug string Gerekli Slug Identifying the Medal Category You Want to be Sponsored for [clientFieldConfiguration:{"Type":"DropDown", "Callback":"/v1/medal/get_available_medal_categories", "EndpointFieldList":{"restrictToSponsorableByUserAlias":"[clientFieldValueList:sponsorUserAlias]"}, "ListConfiguration":{"value":"medalCategorySlug", "title":"medalCategoryName", "defaultOptionMessage":"Please Select Medal Category"}}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_request_medal_sponsorship' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'sponsorUserAlias={{sponsorUserAlias}}' \
  --data-urlencode 'medalCategorySlug=concierge' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

True if medal was successfully sponsored
POST

/v1/medal/set_sponsor_user

#
Sponsor A Medal for will be recommended for the medal you define below.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
userAlias string Gerekli Alias Identifying the User to be sponsored [clientFieldConfiguration:{"Type":"HiddenFieldIfPreset"}]
medalCategorySlug string Gerekli Slug Identifying the Medal Category You Want to Sponsor [clientFieldConfiguration:{"Type":"DropDown", "Callback":"/v1/medal/get_available_medal_categories", "EndpointFieldList":{"restrictToSponsorableByUserAlias":"[clientFieldValueList:sponsoringUserAlias]"}, "ListConfiguration":{"value":"medalCategorySlug", "title":"medalCategoryName", "defaultOptionMessage":"Please Select Medal Category"}}]
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/medal/set_sponsor_user' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'userAlias={{userAlias}}' \
  --data-urlencode 'medalCategorySlug=concierge' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

True if medal was successfully sponsored

/v1/aichat/

Manages AI Chat related functions

POST

/v1/aichat/get

#
Gets messages for a user thread

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatName string Gerekli Name of the chat
isAssistantThread bool İsteğe Bağlı false defines if this is an assistant thread
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/aichat/get' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatName=mr-appointment-trader' \
  --data-urlencode 'isAssistantThread={{isAssistantThread}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

int

true if created successfully.
GET

/v1/aichat/get_status

#
Gets messages for a user thread

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatName string Gerekli Name of the chat
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/aichat/get_status' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatName=new-york'

Dönüşler

int

true if created successfully.
POST

/v1/aichat/set

#
Sends a message to an AI chat

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
message string Gerekli the body of the user message, no more than 10k characters
chatName string Gerekli Name of the chat
respondByAssistantID string İsteğe Bağlı (empty string) If respondByAssistantID is empty the message will be processed later.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/aichat/set' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'message={{message}}' \
  --data-urlencode 'chatName=mr-appointment-trader' \
  --data-urlencode 'respondByAssistantID={{respondByAssistantID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

string

returns the
POST

/v1/aichat/set_clear

#
Clear chat history

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
chatName string Gerekli Name of the chat
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/aichat/set_clear' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'chatName=mr-appointment-trader' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

bool

true if successfully cleared

/v1/account/

Manages Access to the AppointmentTrader Account

GET

/v1/account/get_corporate_account_list

#
Returns platform corporate accounts for Administration inspection tools. This endpoint is admin-only and intentionally ignores impersonation for account ownership: the list contains corporate AppointmentTrader ledger accounts that can be selected as the platform counterparty.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) Optional account name or description filter.
pageSize int İsteğe Bağlı 100 Defines how many results will be returned per request, capped at 250.
pageNumber int İsteğe Bağlı 0 Defines which page should be returned.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/account/get_corporate_account_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter=Seller Fee' \
  --data-urlencode 'pageSize=100' \
  --data-urlencode 'pageNumber={{pageNumber}}'

Dönüşler

NestedKeyValueList

Corporate account list
GET

/v1/account/get_corporate_transaction_summary

#
Returns corporate account transaction totals for a date range, optionally with matching ledger rows. Admin tools inspect another user's transactions through the dispatcher impersonationUserAlias parameter. The selected corporate account is a platform account; the effective API user is used as the counterparty filter.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
accountID string Gerekli Platform corporate account ID.
direction string İsteğe Bağlı both Transaction direction from the corporate account perspective: from, to, or both.
startDate string İsteğe Bağlı (empty string) Inclusive start date in YYYY-MM-DD format.
endDate string İsteğe Bağlı (empty string) Inclusive end date in YYYY-MM-DD format.
includeLedger bool İsteğe Bağlı false Include paginated ledger rows for click-through detail.
pageNumber int İsteğe Bağlı 0 Zero-based page number for included ledger rows.
pageLength int İsteğe Bağlı 50 Number of ledger rows to return, capped at 200.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/account/get_corporate_transaction_summary' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'accountID=123' \
  --data-urlencode 'direction=both' \
  --data-urlencode 'startDate=2026-06-01' \
  --data-urlencode 'endDate=2026-06-30' \
  --data-urlencode 'includeLedger=false' \
  --data-urlencode 'pageNumber={{pageNumber}}' \
  --data-urlencode 'pageLength=50'

Dönüşler

NestedKeyValueList

{ Account, Summary, Ledger, Page }
GET

/v1/account/get_incoming_payment_session

#
Returns details of the incoming payment session and information on whether it has been completed or is still pending.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
uniquePaymentSessionID string Gerekli unique session id returned by /v1/account/set_start_incoming_payment_session
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/account/get_incoming_payment_session' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'uniquePaymentSessionID={{uniquePaymentSessionID}}'

Dönüşler

See live ?explain output for the exact response shape.

GET

/v1/account/get_ledger

#
Returns paginated ledger entries for one account owned by the acting API user. Admin tools should access another user's ledger through the dispatcher impersonationUserAlias parameter; this endpoint still validates the account against the effective API user.

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
accountID string Gerekli Account ID owned by the acting API user.
pageNumber int İsteğe Bağlı 0 Zero-based page number.
pageLength int İsteğe Bağlı 50 Number of ledger rows to return, capped at 200.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/account/get_ledger' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'accountID=123' \
  --data-urlencode 'pageNumber={{pageNumber}}' \
  --data-urlencode 'pageLength=50'

Dönüşler

NestedKeyValueList

{ Account, Ledger, Page }
GET

/v1/account/get_list

#
Returns all available user accounts including their balances and if applicable credit limits in the smallest possible currency unit

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
searchFilter string İsteğe Bağlı (empty string) filter criteria
includeDepositAccount bool İsteğe Bağlı false defines if deposit account should be return
pageSize int İsteğe Bağlı 50 Defines how many results will be return per request
pageNumber int İsteğe Bağlı 0 Defines which page should be returned
includeCorporateAccounts bool İsteğe Bağlı false Admin-only flag to include corporate accounts owned by the inspected user.
includeHiddenAccounts bool İsteğe Bağlı false Admin-only flag to include hidden accounts owned by the inspected user.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/account/get_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'searchFilter={{searchFilter}}' \
  --data-urlencode 'includeDepositAccount={{includeDepositAccount}}' \
  --data-urlencode 'pageSize={{pageSize}}' \
  --data-urlencode 'pageNumber={{pageNumber}}' \
  --data-urlencode 'includeCorporateAccounts={{includeCorporateAccounts}}' \
  --data-urlencode 'includeHiddenAccounts={{includeHiddenAccounts}}'

Dönüşler

NestedKeyValueList
POST

/v1/account/set_start_incoming_payment_session

#
Creates an incoming payments session which will be credited to API users main account.
The gross amount will be discounted, and the discounted expected payment will be returned

Parametreler

Ad Tür Gerekli Varsayılan Açıklama
paymentType string Gerekli Type of payment used
grossAmount int Gerekli Amount that shall be received by the transaction
transactionReferenceID string Gerekli this reference number can be used to avoid creating new payments sessions for the same checkout flow, if an active payments session for this transactionReferenceID exists the ExpiryTime will extended by the payment types sessionLifetime
transactionDescription string Gerekli this description will reflect on the users account detailing what the charge was for.
isWritingRequest bool İsteğe Bağlı false all set_[...] functions have this parameter - if false (which is default) the method will execute without writing any data. Set this parameter to false once you are sure that you tested your logic and want to execute a writing request
İstek örneği (cURL)
curl -X POST \
  'https://tr.appointmenttrader.com/v1/account/set_start_incoming_payment_session' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'paymentType=zelle' \
  --data-urlencode 'grossAmount={{grossAmount}}' \
  --data-urlencode 'transactionReferenceID={{transactionReferenceID}}' \
  --data-urlencode 'transactionDescription={{transactionDescription}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Dönüşler

See live ?explain output for the exact response shape.

/v1/external_services/

External Services Administration-only health checks for third-party services that the marketplace depends on.

GET

/v1/external_services/get_status

#
Returns the external-service registry with live health-check results.
İstek örneği (cURL)
curl -X GET \
  'https://tr.appointmenttrader.com/v1/external_services/get_status' \
  --data-urlencode 'key={{API_KEY}}'

Dönüşler

array

Service registry entries, current status, test call metadata, and response previews.

No endpoints found for "".

Uç nokta adını veya açıklamasından bir ifadeyi aramayı deneyin.