Developer portal

EVLO.AZ API, OAuth 2.1 və MCP — AI agentləri və inteqrasiyalar üçün rəsmi kanal

REST API (v1)

Versiyalı OpenAPI kontraktı. Bütün cavablar JSON, xətalar maşın tərəfindən oxunan formatdadır:

Bütün nümunələr real public API-yə əsaslanır (same-origin proxy vasitəsilə). Daxili ünvanlar göstərilmir.

GET /api/evlo/v1/catalog/listings?transactionType=sale&priceMax=200000

# Nümunə cavab:
{ "items": [ /* ... */ ], "total": <n>, "page": 1, "limit": 20 }
OpenAPI spesifikasiyası (openapi.json)İnteraktiv Swagger UI

OAuth 2.1 avtorizasiya

Bütün yazma əməliyyatları üçün authorization-code + PKCE (S256) mütləqdir. Access tokenlər qısaömürlüdür, refresh tokenlər rotasiya ilə yenilənir. İstifadəçi icazə ekranında rejimi və səlahiyyətləri görüb OTP ilə təsdiqləyir.

Endpointlər:

POST /api/evlo/v1/oauth/register        # dynamic client registration (RFC 7591)
GET  /api/evlo/v1/oauth/authorize       # consent screen (response_type=code, PKCE S256 required)
POST /api/evlo/v1/oauth/token           # authorization_code | refresh_token
GET  /api/evlo/v1/.well-known/oauth-authorization-server
GET  /api/evlo/v1/.well-known/oauth-protected-resource

# Autonomy mode is chosen by the user on the consent screen:
#   READ_ONLY | DRAFT_ONLY | CONFIRM_PUBLISH (default) | DELEGATED_AUTONOMY

Remote MCP endpoint

Model Context Protocol (JSON-RPC 2.0, Streamable HTTP). REST ilə eyni domain servislər — ayrıca biznes-məntiq yoxdur. Auth: OAuth Bearer token.

POST /api/evlo/v1/mcp
Authorization: Bearer <access_token>
Content-Type: application/json

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"search_listings","arguments":{"transactionType":"rent","limit":5}}}

17 tool

search_listingsSearch active listings with filters
get_listingGet one public listing card
compare_listingsCompare 2–5 listings side by side
get_taxonomyValid types, renovation values, place slugs
get_listing_requirementsRequired fields, media limits, moderation rules
get_my_listingsListings of the connected user
create_listing_draftCreate a draft for the connected user
get_listing_draftGet a draft with version and validation
update_listing_draftUpdate a draft (optimistic concurrency)
validate_listing_draftMissing fields and warnings
preview_listingPreview the card exactly as users will see it
submit_listing_for_reviewSubmit to moderation (mode-aware)
publish_listingPublish (DELEGATED_AUTONOMY; same moderation)
pause_listingPause an active listing (reversible)
mark_listing_closedMark as sold or rented
get_agent_grantCurrent grant: mode, scopes, limits
get_agent_action_statusStatus of an async operation

Xəta formatı

Bütün xətalar {code, message} strukturundadır; scope/limit imtinaları ayrıca kodlarla qayıdır (scope_denied, daily_action_limit, version_conflict və s.).

HTTP 403
{"code":"scope_denied","message":"Scope listings:publish is not granted","requiredScope":"listings:publish"}

HTTP 409
{"code":"version_conflict","message":"Listing was modified concurrently","currentVersion":4}

Changelog

  • v1 (2026-08) — ilk buraxılış: kataloq, elan qaralamaları, media, moderasiya, AI-agent access (OAuth 2.1 + PKCE, 4 rejim, MCP, idempotent yazma)

Əlaqə

İnteqrasiya sualları üçün: info@aimarket.az · AI agents