{"openapi":"3.1.0","info":{"title":"REALJOIN Agent API","version":"1.0.0","description":"Public agent-readable API for REALJOIN service discovery, pricing, contact, quote preparation, order intents, and checkout creation."},"servers":[{"url":"https://www.realjoin.io"}],"components":{"securitySchemes":{"AgentApiKey":{"type":"apiKey","in":"header","name":"x-realjoin-agent-key"}}},"paths":{"/api/agent/catalog":{"get":{"summary":"Get the full agent catalog","responses":{"200":{"description":"Agent catalog"}}}},"/api/agent/services":{"get":{"summary":"List services","responses":{"200":{"description":"Service list"}}}},"/api/agent/services/{slug}":{"get":{"summary":"Get a service by slug","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Service detail"},"404":{"description":"Service not found"}}}},"/api/agent/pricing":{"get":{"summary":"List public pricing","responses":{"200":{"description":"Pricing list"}}}},"/api/agent/contact":{"get":{"summary":"Get REALJOIN contact channels","responses":{"200":{"description":"Contact channels"}}},"post":{"summary":"Prepare or send a Telegram contact request","security":[{"AgentApiKey":[]}],"responses":{"200":{"description":"Telegram contact result"},"401":{"description":"Invalid agent key"}}}},"/api/agent/keys":{"get":{"summary":"List account agent API keys","parameters":[{"name":"x-realjoin-agent-owner","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Key list"}}},"post":{"summary":"Create an account agent API key","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ownerId"],"properties":{"ownerId":{"type":"string"},"ownerLabel":{"type":"string"},"name":{"type":"string"}}}}}},"responses":{"200":{"description":"Created key; secret returned once"}}}},"/api/agent/quote":{"post":{"summary":"Prepare a quote and Telegram contact message","security":[{"AgentApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["serviceSlug"],"properties":{"serviceSlug":{"type":"string"},"packageId":{"type":"string"},"targetUrl":{"type":"string"},"budget":{"type":"string"},"quantity":{"type":"string"},"contact":{"type":"string"},"notes":{"type":"string"}}}}}},"responses":{"200":{"description":"Quote preparation result"},"400":{"description":"Invalid quote request"},"404":{"description":"Service not found"}}}},"/api/agent/order-intents":{"get":{"summary":"List order intents for the key owner","security":[{"AgentApiKey":[]}],"responses":{"200":{"description":"Order intent list"}}},"post":{"summary":"Create a trackable agent order intent","security":[{"AgentApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["serviceSlug"],"properties":{"serviceSlug":{"type":"string"},"packageId":{"type":"string"},"targetUrl":{"type":"string"},"budget":{"type":"string"},"quantity":{"type":"string"},"contact":{"type":"string"},"notes":{"type":"string"}}}}}},"responses":{"200":{"description":"Created order intent"},"401":{"description":"Invalid agent key"}}}},"/api/agent/checkout":{"post":{"summary":"Create a payable order and payment URL","security":[{"AgentApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["serviceSlug"],"properties":{"serviceSlug":{"type":"string"},"packageId":{"type":"string"},"targetUrl":{"type":"string"},"contact":{"type":"string"},"notes":{"type":"string"},"quantity":{"type":"string"},"fields":{"type":"object","additionalProperties":{"type":"string"}}}}}}},"responses":{"200":{"description":"Created order and payment URL"},"401":{"description":"Invalid agent key or missing order scope"},"409":{"description":"Service requires confirmation before payment"},"501":{"description":"Online checkout is not configured"}}}},"/api/agent/order-intents/{intentId}":{"get":{"summary":"Get an order intent by id","parameters":[{"name":"intentId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Order intent detail"},"404":{"description":"Intent not found"}}}}}}