{ "opencollection": "1.0.0", "info": { "name": "Opply Activity Feed api API", "version": "0.0.0" }, "items": [ { "info": { "name": "api", "type": "folder" }, "items": [ { "info": { "name": "api_schema_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/schema/", "params": [ { "name": "format", "value": "", "type": "query" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "OpenApi3 schema for this API. Format can be selected via content negotiation.\n\n- YAML: application/vnd.oai.openapi\n- JSON: application/vnd.oai.openapi+json" }, { "info": { "name": "api_v1_agents_agent_task_runs_claim_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/agents/agent-task-runs/:run_uuid/claim/", "params": [ { "name": "run_uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Atomic ``dispatching → running`` transition. The agent-side dedup point.\n\nCalled by the task-runner harness immediately on workflow entry. The\nfirst invocation wins (status flips, 200 returned); any duplicate\ndispatch for the same ``run_uuid`` loses the status guard and gets\n409. Resolves the historical \"delivery state unknown\" ambiguity\nwhen the dispatcher's POST to AgentCore times out and Celery\nautoretries — both invocations may execute, but only one claims." }, { "info": { "name": "api_v1_agents_agent_task_runs_complete_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/agents/agent-task-runs/:run_uuid/complete/", "params": [ { "name": "run_uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Agent-only callback to mark an ``AgentTaskRun`` terminal." }, { "info": { "name": "api_v1_agents_agent_task_runs_heartbeat_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/agents/agent-task-runs/:run_uuid/heartbeat/", "params": [ { "name": "run_uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Refresh ``last_heartbeat_at`` on a running run.\n\nAgent calls this every ~30s while executing. Single UPDATE — no\nSELECT, no transaction — at this cadence the cost matters. A 409\nresponse is the agent's signal to abort its loop: the run has been\nre-dispatched as a fresh row, watchdog-timed-out, cancelled, or\nmoved out of running for some other reason." }, { "info": { "name": "api_v1_agents_buyer_onboarding_invocations_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/agents/buyer-onboarding/invocations/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Streaming proxy for ``POST /api/v1/agents/buyer-onboarding/invocations/``.\n\nBody:\n - ``prompt``: required str.\n - ``session_id``: optional; defaults to a fresh ``opply-``.\n - ``batch_uuid``: optional. When present, the proxy validates that\n the batch belongs to ``request.user_company``, loads its invoices,\n mints short-TTL presigned URLs, and forwards them as\n ``invoices: [{uuid, filename, mime, signed_url, page_count}]`` in\n the upstream payload. Cross-tenant attempts 4" }, { "info": { "name": "api_v1_agents_feedback_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/agents/feedback/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Create / upsert one feedback row per (user, agent_name, invocation_id)." }, { "info": { "name": "api_v1_agents_opply_assistant_invocations_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/agents/opply-assistant/invocations/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Streaming proxy for ``POST /api/v1/agents/opply-assistant/invocations/``.\n\nopply-assistant — orchestrator hosting the buyer-assistant worker. The\nrequest's ``channel`` field selects the AgentCore version channel\n(``next`` → the candidate endpoint). See ``_AssistantInvocationsBaseView``\nfor the shared chat-proxy contract (auth, throttling, response format,\nrequest body shape)." }, { "info": { "name": "api_v1_agents_opply_assistant_sessions_me_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/agents/opply-assistant/sessions/me/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "``GET`` / ``DELETE`` the opply-assistant session pointer for the current user.\n\nSee ``_AssistantSessionMeBaseView`` for the shared contract." }, { "info": { "name": "api_v1_agents_opply_assistant_sessions_me_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/agents/opply-assistant/sessions/me/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "``GET`` / ``DELETE`` the opply-assistant session pointer for the current user.\n\nSee ``_AssistantSessionMeBaseView`` for the shared contract." }, { "info": { "name": "api_v1_agents_opply_assistant_sessions_me_events_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/agents/opply-assistant/sessions/me/events/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "``GET`` the opply-assistant conversation transcript for the active session.\n\nSee ``_AssistantSessionEventsBaseView`` for the shared contract." }, { "info": { "name": "api_v1_agents_unleashed_invoice_assistant_invocations_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/agents/unleashed-invoice-assistant/invocations/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Streaming proxy for ``POST /api/v1/agents/unleashed-invoice-assistant/invocations/``.\n\nBody:\n - ``session_id``: optional; defaults to a fresh ``opply-``.\n - ``prompt``: optional; ignored by the agent but forwarded for parity.\n\nResponse: ``text/event-stream`` of ``AgentStreamEvent`` frames. The agent\nemits the ``opplyExtraction*`` variants itself." }, { "info": { "name": "api_v1_agents_xero_invoice_assistant_invocations_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/agents/xero-invoice-assistant/invocations/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Streaming proxy for ``POST /api/v1/agents/xero-invoice-assistant/invocations/``.\n\nBody:\n - ``session_id``: optional; defaults to a fresh ``opply-``.\n - ``prompt``: optional; ignored by the agent but forwarded for parity.\n\nResponse: ``text/event-stream`` of ``AgentStreamEvent`` frames. The agent\nemits the ``opplyExtraction*`` variants itself." }, { "info": { "name": "api_v1_agreements_lead_generation_jobs_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/agreements/lead-generation-jobs/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "GET and POST API endpoint for LeadGenerationJob - isolated feature" }, { "info": { "name": "api_v1_agreements_lead_generation_jobs_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/agreements/lead-generation-jobs/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "GET and POST API endpoint for LeadGenerationJob - isolated feature" }, { "info": { "name": "api_v1_app_orders_alerts_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/app-orders/alerts/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "GET API endpoint for Alerts - isolated feature" }, { "info": { "name": "api_v1_app_orders_brand_order_adjustments_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/app-orders/brand/order-adjustments/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Buyer-side read access to OrderAdjustment.\n\nBuyers can list and fetch credit/debit notes that belong to their own\ncompany. VOID rows are hidden — they're audit history with no buyer-facing\nvalue. Writes (create / apply / finalise / void) are MoR-only (sc-2888).\nThe buyer-facing serializer also strips `supplier_document_url` so the\nsupplier's internal credit/debit note PDF never reaches the buyer." }, { "info": { "name": "api_v1_app_orders_brand_order_adjustments_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/app-orders/brand/order-adjustments/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Buyer-side read access to OrderAdjustment.\n\nBuyers can list and fetch credit/debit notes that belong to their own\ncompany. VOID rows are hidden — they're audit history with no buyer-facing\nvalue. Writes (create / apply / finalise / void) are MoR-only (sc-2888).\nThe buyer-facing serializer also strips `supplier_document_url` so the\nsupplier's internal credit/debit note PDF never reaches the buyer." }, { "info": { "name": "api_v1_app_orders_forecasts_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/app-orders/forecasts/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "GET API endpoint for Forecast - isolated feature" }, { "info": { "name": "api_v1_app_orders_merchant_of_record_order_adjustments_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/app-orders/merchant-of-record/order-adjustments/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "MoR-facing endpoints for buyer credit/debit notes (OrderAdjustment).\n\nLifecycle: AVAILABLE → APPLIED, AVAILABLE → PENDING_APPLICATION → APPLIED,\nor any → VOID. Provider integration (Stripe / Two) is dispatched by the\n`credit_note_service`; this viewset only orchestrates HTTP I/O and translates\nservice-layer exceptions to 4xx responses." }, { "info": { "name": "Create a new OrderAdjustment in AVAILABLE state (multipart upload)", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/app-orders/merchant-of-record/order-adjustments/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "MoR-facing endpoints for buyer credit/debit notes (OrderAdjustment).\n\nLifecycle: AVAILABLE → APPLIED, AVAILABLE → PENDING_APPLICATION → APPLIED,\nor any → VOID. Provider integration (Stripe / Two) is dispatched by the\n`credit_note_service`; this viewset only orchestrates HTTP I/O and translates\nservice-layer exceptions to 4xx responses." }, { "info": { "name": "api_v1_app_orders_merchant_of_record_order_adjustments_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/app-orders/merchant-of-record/order-adjustments/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "MoR-facing endpoints for buyer credit/debit notes (OrderAdjustment).\n\nLifecycle: AVAILABLE → APPLIED, AVAILABLE → PENDING_APPLICATION → APPLIED,\nor any → VOID. Provider integration (Stripe / Two) is dispatched by the\n`credit_note_service`; this viewset only orchestrates HTTP I/O and translates\nservice-layer exceptions to 4xx responses." }, { "info": { "name": "Apply an AVAILABLE adjustment to a target order", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/app-orders/merchant-of-record/order-adjustments/:uuid/apply/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "MoR-facing endpoints for buyer credit/debit notes (OrderAdjustment).\n\nLifecycle: AVAILABLE → APPLIED, AVAILABLE → PENDING_APPLICATION → APPLIED,\nor any → VOID. Provider integration (Stripe / Two) is dispatched by the\n`credit_note_service`; this viewset only orchestrates HTTP I/O and translates\nservice-layer exceptions to 4xx responses." }, { "info": { "name": "Finalise a PENDING_APPLICATION adjustment now that the target invoice exists", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/app-orders/merchant-of-record/order-adjustments/:uuid/finalise/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "MoR-facing endpoints for buyer credit/debit notes (OrderAdjustment).\n\nLifecycle: AVAILABLE → APPLIED, AVAILABLE → PENDING_APPLICATION → APPLIED,\nor any → VOID. Provider integration (Stripe / Two) is dispatched by the\n`credit_note_service`; this viewset only orchestrates HTTP I/O and translates\nservice-layer exceptions to 4xx responses." }, { "info": { "name": "Download the supplier-uploaded credit/debit note file", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/app-orders/merchant-of-record/order-adjustments/:uuid/supplier-document/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "MoR-facing endpoints for buyer credit/debit notes (OrderAdjustment).\n\nLifecycle: AVAILABLE → APPLIED, AVAILABLE → PENDING_APPLICATION → APPLIED,\nor any → VOID. Provider integration (Stripe / Two) is dispatched by the\n`credit_note_service`; this viewset only orchestrates HTTP I/O and translates\nservice-layer exceptions to 4xx responses." }, { "info": { "name": "Void an adjustment (idempotent on already-VOID rows)", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/app-orders/merchant-of-record/order-adjustments/:uuid/void/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "MoR-facing endpoints for buyer credit/debit notes (OrderAdjustment).\n\nLifecycle: AVAILABLE → APPLIED, AVAILABLE → PENDING_APPLICATION → APPLIED,\nor any → VOID. Provider integration (Stripe / Two) is dispatched by the\n`credit_note_service`; this viewset only orchestrates HTTP I/O and translates\nservice-layer exceptions to 4xx responses." }, { "info": { "name": "api_v1_app_orders_trends_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/app-orders/trends/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "GET API endpoint for Trends - isolated feature" }, { "info": { "name": "api_v1_companies_document_types_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/document-types/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_document_types_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/document-types/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_mor_onboarding_suppliers_notes_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/mor/onboarding-suppliers/:uuid/notes/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_mor_onboarding_suppliers_notes_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/companies/mor/onboarding-suppliers/:uuid/notes/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_mor_onboarding_suppliers_notes_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/mor/onboarding-suppliers/:uuid/notes/:note_uuid/", "params": [ { "name": "note_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_mor_onboarding_suppliers_notes_update", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/api/v1/companies/mor/onboarding-suppliers/:uuid/notes/:note_uuid/", "params": [ { "name": "note_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_mor_onboarding_suppliers_notes_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/companies/mor/onboarding-suppliers/:uuid/notes/:note_uuid/", "params": [ { "name": "note_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_mor_suppliers_notes_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/mor/suppliers/:uuid/notes/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_mor_suppliers_notes_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/companies/mor/suppliers/:uuid/notes/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_mor_suppliers_notes_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/mor/suppliers/:uuid/notes/:note_uuid/", "params": [ { "name": "note_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_mor_suppliers_notes_update", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/api/v1/companies/mor/suppliers/:uuid/notes/:note_uuid/", "params": [ { "name": "note_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_mor_suppliers_notes_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/companies/mor/suppliers/:uuid/notes/:note_uuid/", "params": [ { "name": "note_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_supplier_document_types_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/supplier-document-types/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_supplier_document_types_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/supplier-document-types/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_suppliers_supplier_documents_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/suppliers/:supplier_uuid/supplier-documents/", "params": [ { "name": "ordering", "value": "", "type": "query", "description": "Which field to use when ordering the results." }, { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." }, { "name": "search", "value": "", "type": "query", "description": "A search term." }, { "name": "supplier_uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_suppliers_supplier_documents_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/companies/suppliers/:supplier_uuid/supplier-documents/", "params": [ { "name": "supplier_uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_suppliers_supplier_documents_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/suppliers/:supplier_uuid/supplier-documents/:uuid/", "params": [ { "name": "supplier_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_suppliers_supplier_documents_update", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/api/v1/companies/suppliers/:supplier_uuid/supplier-documents/:uuid/", "params": [ { "name": "supplier_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_suppliers_supplier_documents_partial_update", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v1/companies/suppliers/:supplier_uuid/supplier-documents/:uuid/", "params": [ { "name": "supplier_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_suppliers_supplier_documents_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/companies/suppliers/:supplier_uuid/supplier-documents/:uuid/", "params": [ { "name": "supplier_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "Get available sites for document upload", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/suppliers/:supplier_uuid/supplier-documents/available-sites/", "params": [ { "name": "supplier_uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Returns merged list of existing SupplierSite names and dispatch address names (SC-2293)." }, { "info": { "name": "api_v1_companies_suppliers_supplier_documents_available_types_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/suppliers/:supplier_uuid/supplier-documents/available-types/", "params": [ { "name": "supplier_uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_companies_suppliers_supplier_documents_sites_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/companies/suppliers/:supplier_uuid/supplier-documents/sites/", "params": [ { "name": "supplier_uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_cortex_jobs_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/cortex/jobs/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ] }, "docs": "Endpoints:\n - POST /jobs/ -> create job (return UUID only)\n - PATCH /jobs// -> update agent_name, description, or status\n - GET /jobs/executing/ -> list all jobs where status == EXECUTING" }, { "info": { "name": "api_v1_cortex_jobs_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/cortex/jobs/", "body": { "type": "json", "data": "{}" } }, "docs": "Endpoints:\n - POST /jobs/ -> create job (return UUID only)\n - PATCH /jobs// -> update agent_name, description, or status\n - GET /jobs/executing/ -> list all jobs where status == EXECUTING" }, { "info": { "name": "api_v1_cortex_jobs_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/cortex/jobs/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ] }, "docs": "Endpoints:\n - POST /jobs/ -> create job (return UUID only)\n - PATCH /jobs// -> update agent_name, description, or status\n - GET /jobs/executing/ -> list all jobs where status == EXECUTING" }, { "info": { "name": "api_v1_cortex_jobs_update", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/api/v1/cortex/jobs/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "Endpoints:\n - POST /jobs/ -> create job (return UUID only)\n - PATCH /jobs// -> update agent_name, description, or status\n - GET /jobs/executing/ -> list all jobs where status == EXECUTING" }, { "info": { "name": "api_v1_cortex_jobs_partial_update", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v1/cortex/jobs/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "Endpoints:\n - POST /jobs/ -> create job (return UUID only)\n - PATCH /jobs// -> update agent_name, description, or status\n - GET /jobs/executing/ -> list all jobs where status == EXECUTING" }, { "info": { "name": "api_v1_cortex_jobs_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/cortex/jobs/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ] }, "docs": "Endpoints:\n - POST /jobs/ -> create job (return UUID only)\n - PATCH /jobs// -> update agent_name, description, or status\n - GET /jobs/executing/ -> list all jobs where status == EXECUTING" }, { "info": { "name": "api_v1_cortex_jobs_executing_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/cortex/jobs/executing/" }, "docs": "Endpoints:\n - POST /jobs/ -> create job (return UUID only)\n - PATCH /jobs// -> update agent_name, description, or status\n - GET /jobs/executing/ -> list all jobs where status == EXECUTING" }, { "info": { "name": "api_v1_cortex_workflows_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/cortex/workflows/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ] }, "docs": "Endpoints:\n - POST /workflows/ -> create workflow (return UUID only)\n - GET /workflows/ -> list workflows, each with associated jobs" }, { "info": { "name": "api_v1_cortex_workflows_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/cortex/workflows/", "body": { "type": "json", "data": "{}" } }, "docs": "Endpoints:\n - POST /workflows/ -> create workflow (return UUID only)\n - GET /workflows/ -> list workflows, each with associated jobs" }, { "info": { "name": "api_v1_cortex_workflows_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/cortex/workflows/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ] }, "docs": "Endpoints:\n - POST /workflows/ -> create workflow (return UUID only)\n - GET /workflows/ -> list workflows, each with associated jobs" }, { "info": { "name": "api_v1_cortex_workflows_update", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/api/v1/cortex/workflows/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "Endpoints:\n - POST /workflows/ -> create workflow (return UUID only)\n - GET /workflows/ -> list workflows, each with associated jobs" }, { "info": { "name": "api_v1_cortex_workflows_partial_update", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v1/cortex/workflows/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "Endpoints:\n - POST /workflows/ -> create workflow (return UUID only)\n - GET /workflows/ -> list workflows, each with associated jobs" }, { "info": { "name": "api_v1_cortex_workflows_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/cortex/workflows/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ] }, "docs": "Endpoints:\n - POST /workflows/ -> create workflow (return UUID only)\n - GET /workflows/ -> list workflows, each with associated jobs" }, { "info": { "name": "api_v1_crm_companies_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/companies/", "params": [ { "name": "address_raw", "value": "", "type": "query" }, { "name": "city", "value": "", "type": "query" }, { "name": "country", "value": "", "type": "query" }, { "name": "description", "value": "", "type": "query" }, { "name": "dns_check_success", "value": "", "type": "query" }, { "name": "domain", "value": "", "type": "query" }, { "name": "employees_max", "value": "", "type": "query" }, { "name": "employees_min", "value": "", "type": "query" }, { "name": "has_hubspot_deal", "value": "", "type": "query" }, { "name": "has_hubspot_lead", "value": "", "type": "query" }, { "name": "has_score", "value": "", "type": "query" }, { "name": "hubspot_deal_stage", "value": "", "type": "query", "description": "* `no_deal` - No Deal\n* `in_progress` - In Progress\n* `won` - Won\n* `lost` - Lost" }, { "name": "hubspot_status", "value": "", "type": "query" }, { "name": "hubspot_synced", "value": "", "type": "query" }, { "name": "industries", "value": "", "type": "query" }, { "name": "keywords", "value": "", "type": "query" }, { "name": "linkedin_url", "value": "", "type": "query" }, { "name": "naics_codes", "value": "", "type": "query" }, { "name": "name", "value": "", "type": "query" }, { "name": "ordering", "value": "", "type": "query", "description": "Which field to use when ordering the results." }, { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." }, { "name": "phone", "value": "", "type": "query" }, { "name": "primary_industry", "value": "", "type": "query" }, { "name": "revenue_max", "value": "", "type": "query" }, { "name": "revenue_min", "value": "", "type": "query" }, { "name": "score_max", "value": "", "type": "query" }, { "name": "score_min", "value": "", "type": "query" }, { "name": "score_snapshot_at", "value": "", "type": "query" }, { "name": "search", "value": "", "type": "query", "description": "A search term." }, { "name": "sic_codes", "value": "", "type": "query" }, { "name": "source", "value": "", "type": "query" }, { "name": "sources", "value": "", "type": "query" }, { "name": "state", "value": "", "type": "query" }, { "name": "year_founded_max", "value": "", "type": "query" }, { "name": "year_founded_min", "value": "", "type": "query" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "ViewSet for managing CRM companies, including bulk import with field data." }, { "info": { "name": "api_v1_crm_companies_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/companies/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "ViewSet for managing CRM companies, including bulk import with field data." }, { "info": { "name": "api_v1_crm_companies_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/crm/companies/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "ViewSet for managing CRM companies, including bulk import with field data." }, { "info": { "name": "Get ICP scoring breakdown for a company", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/companies/:uuid/scoring-debug/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Return ICP scoring breakdown for a company.\n\nFetches the last completed icp_scoring enrichment result and\nre-computes the score with a per-signal breakdown." }, { "info": { "name": "api_v1_crm_companies_bulk_import_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/companies/bulk-import/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Bulk import CRM companies, optionally with flat field data." }, { "info": { "name": "Enrichment callback from the enrichment subsystem", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/companies/enrichment-run/:uuid/callback/", "params": [ { "name": "uuid", "value": "", "type": "path" } ] }, "docs": "Called by the enrichment subsystem after it has finished processing a batch and written results to the enrichment_results table. Triggers score computation and progress tracking. Requires a Bearer token in the Authorization header." }, { "info": { "name": "api_v1_crm_companies_field_values_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/companies/field-values/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Return distinct values for a given CrmCompanyData column, used to populate filter dropdowns." }, { "info": { "name": "Create leads in HubSpot for selected companies", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/companies/hubspot-create-leads/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Create leads in HubSpot for the given companies.\n\nAccepts company UUIDs, pipeline, and owner in a single call.\nCreates a HubSpotSyncRun and dispatches a Celery task.\nReturns 202 with run_uuid for status polling." }, { "info": { "name": "Get HubSpot Create Leads run status", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/companies/hubspot-create-leads/:run_uuid/status/", "params": [ { "name": "run_uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Poll the status and progress of a Create Leads run." }, { "info": { "name": "List available HubSpot owners", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/companies/hubspot-owners/", "params": [ { "name": "address_raw", "value": "", "type": "query" }, { "name": "city", "value": "", "type": "query" }, { "name": "country", "value": "", "type": "query" }, { "name": "description", "value": "", "type": "query" }, { "name": "dns_check_success", "value": "", "type": "query" }, { "name": "domain", "value": "", "type": "query" }, { "name": "employees_max", "value": "", "type": "query" }, { "name": "employees_min", "value": "", "type": "query" }, { "name": "has_hubspot_deal", "value": "", "type": "query" }, { "name": "has_hubspot_lead", "value": "", "type": "query" }, { "name": "has_score", "value": "", "type": "query" }, { "name": "hubspot_deal_stage", "value": "", "type": "query", "description": "* `no_deal` - No Deal\n* `in_progress` - In Progress\n* `won` - Won\n* `lost` - Lost" }, { "name": "hubspot_status", "value": "", "type": "query" }, { "name": "hubspot_synced", "value": "", "type": "query" }, { "name": "industries", "value": "", "type": "query" }, { "name": "keywords", "value": "", "type": "query" }, { "name": "linkedin_url", "value": "", "type": "query" }, { "name": "naics_codes", "value": "", "type": "query" }, { "name": "name", "value": "", "type": "query" }, { "name": "ordering", "value": "", "type": "query", "description": "Which field to use when ordering the results." }, { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." }, { "name": "phone", "value": "", "type": "query" }, { "name": "primary_industry", "value": "", "type": "query" }, { "name": "revenue_max", "value": "", "type": "query" }, { "name": "revenue_min", "value": "", "type": "query" }, { "name": "score_max", "value": "", "type": "query" }, { "name": "score_min", "value": "", "type": "query" }, { "name": "score_snapshot_at", "value": "", "type": "query" }, { "name": "search", "value": "", "type": "query", "description": "A search term." }, { "name": "sic_codes", "value": "", "type": "query" }, { "name": "source", "value": "", "type": "query" }, { "name": "sources", "value": "", "type": "query" }, { "name": "state", "value": "", "type": "query" }, { "name": "year_founded_max", "value": "", "type": "query" }, { "name": "year_founded_min", "value": "", "type": "query" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Return HubSpot owners (users with seats) for the Create Leads dropdown." }, { "info": { "name": "List available HubSpot lead pipelines", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/companies/hubspot-pipelines/", "params": [ { "name": "address_raw", "value": "", "type": "query" }, { "name": "city", "value": "", "type": "query" }, { "name": "country", "value": "", "type": "query" }, { "name": "description", "value": "", "type": "query" }, { "name": "dns_check_success", "value": "", "type": "query" }, { "name": "domain", "value": "", "type": "query" }, { "name": "employees_max", "value": "", "type": "query" }, { "name": "employees_min", "value": "", "type": "query" }, { "name": "has_hubspot_deal", "value": "", "type": "query" }, { "name": "has_hubspot_lead", "value": "", "type": "query" }, { "name": "has_score", "value": "", "type": "query" }, { "name": "hubspot_deal_stage", "value": "", "type": "query", "description": "* `no_deal` - No Deal\n* `in_progress` - In Progress\n* `won` - Won\n* `lost` - Lost" }, { "name": "hubspot_status", "value": "", "type": "query" }, { "name": "hubspot_synced", "value": "", "type": "query" }, { "name": "industries", "value": "", "type": "query" }, { "name": "keywords", "value": "", "type": "query" }, { "name": "linkedin_url", "value": "", "type": "query" }, { "name": "naics_codes", "value": "", "type": "query" }, { "name": "name", "value": "", "type": "query" }, { "name": "ordering", "value": "", "type": "query", "description": "Which field to use when ordering the results." }, { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." }, { "name": "phone", "value": "", "type": "query" }, { "name": "primary_industry", "value": "", "type": "query" }, { "name": "revenue_max", "value": "", "type": "query" }, { "name": "revenue_min", "value": "", "type": "query" }, { "name": "score_max", "value": "", "type": "query" }, { "name": "score_min", "value": "", "type": "query" }, { "name": "score_snapshot_at", "value": "", "type": "query" }, { "name": "search", "value": "", "type": "query", "description": "A search term." }, { "name": "sic_codes", "value": "", "type": "query" }, { "name": "source", "value": "", "type": "query" }, { "name": "sources", "value": "", "type": "query" }, { "name": "state", "value": "", "type": "query" }, { "name": "year_founded_max", "value": "", "type": "query" }, { "name": "year_founded_min", "value": "", "type": "query" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Return available HubSpot lead pipelines for the Create Leads dropdown." }, { "info": { "name": "api_v1_crm_companies_import_file_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/companies/import-file/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Upload a JSON file and import companies asynchronously using the matching strategy.\n\nAccepts multipart form data with:\n - file: the JSON file\n - schema: one of the CrmImportSchema values — determines which import strategy to use\n - source: one of the CrmCompanySource values — stored on each imported company record\n\nReturns a task_id that can be used to poll import-file/status/{task_id}/." }, { "info": { "name": "api_v1_crm_companies_import_file_status_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/companies/import-file/status/:task_id/", "params": [ { "name": "task_id", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Poll the status of a CRM file import task." }, { "info": { "name": "api_v1_crm_contacts_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/contacts/", "params": [ { "name": "company", "value": "", "type": "query" }, { "name": "company_name", "value": "", "type": "query" }, { "name": "first_name", "value": "", "type": "query" }, { "name": "full_name", "value": "", "type": "query" }, { "name": "job_title", "value": "", "type": "query" }, { "name": "last_name", "value": "", "type": "query" }, { "name": "linkedin_url", "value": "", "type": "query" }, { "name": "location", "value": "", "type": "query" }, { "name": "ordering", "value": "", "type": "query", "description": "Which field to use when ordering the results." }, { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." }, { "name": "search", "value": "", "type": "query", "description": "A search term." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "ViewSet for managing CRM contacts, including bulk import via CSV file upload." }, { "info": { "name": "api_v1_crm_contacts_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/crm/contacts/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "ViewSet for managing CRM contacts, including bulk import via CSV file upload." }, { "info": { "name": "api_v1_crm_contacts_enrich_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/contacts/:uuid/enrich/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "Enrich a contact with phone numbers and emails from an external provider.\n\nAuthenticated via service account token (X-Service-Token header).\nUpserts phone and email fields in the contact fields table." }, { "info": { "name": "api_v1_crm_contacts_request_enrichment_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/contacts/:uuid/request-enrichment/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Forward a contact enrichment request to Clay.\n\nCalled by the frontend when a user clicks Enrich on a contact card.\nValidates the payload then fires the Clay webhook asynchronously (fire-and-forget).\nReturns 202 Accepted immediately — Clay will call back via the enrich endpoint\nwhen it has results." }, { "info": { "name": "api_v1_crm_contacts_bulk_import_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/contacts/bulk-import/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Bulk import CRM contacts from a CSV file upload.\n\nAccepts multipart/form-data with a 'file' field containing the CSV.\nContacts are matched to existing CRM companies via the domain column.\nRows with unrecognised domains are skipped.\nProcessing is asynchronous — returns 202 Accepted immediately." }, { "info": { "name": "api_v1_crm_custom_columns_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/custom-columns/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM custom column definitions.\n\nAll MoR users in the same company can list and use columns.\nOnly the column creator can update or delete it." }, { "info": { "name": "api_v1_crm_custom_columns_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/custom-columns/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM custom column definitions.\n\nAll MoR users in the same company can list and use columns.\nOnly the column creator can update or delete it." }, { "info": { "name": "api_v1_crm_custom_columns_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/custom-columns/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM custom column definitions.\n\nAll MoR users in the same company can list and use columns.\nOnly the column creator can update or delete it." }, { "info": { "name": "api_v1_crm_custom_columns_update", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/api/v1/crm/custom-columns/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM custom column definitions.\n\nAll MoR users in the same company can list and use columns.\nOnly the column creator can update or delete it." }, { "info": { "name": "api_v1_crm_custom_columns_partial_update", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v1/crm/custom-columns/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM custom column definitions.\n\nAll MoR users in the same company can list and use columns.\nOnly the column creator can update or delete it." }, { "info": { "name": "api_v1_crm_custom_columns_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/crm/custom-columns/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM custom column definitions.\n\nAll MoR users in the same company can list and use columns.\nOnly the column creator can update or delete it." }, { "info": { "name": "api_v1_crm_enrichment_runs_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/enrichment-runs/", "params": [ { "name": "ordering", "value": "", "type": "query", "description": "Which field to use when ordering the results." }, { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Read-only history of enrichment runs scoped to the requesting user's company." }, { "info": { "name": "api_v1_crm_enrichment_runs_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/enrichment-runs/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Read-only history of enrichment runs scoped to the requesting user's company." }, { "info": { "name": "api_v1_crm_hubspot_sync_runs_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/hubspot-sync-runs/", "params": [ { "name": "ordering", "value": "", "type": "query", "description": "Which field to use when ordering the results." }, { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Read-only history of HubSpot sync runs scoped to the requesting user's company.\n\nIncludes both view-scoped runs (auto-trigger and manual `hubspot-sync` action on\nsaved views) and view-null runs (Create Leads via `CrmCompanyViewSet`).\n\n- View-scoped runs are visible to the company that owns the saved view.\n- View-null (Create Leads) runs are visible to the company of the user who\n triggered them." }, { "info": { "name": "api_v1_crm_hubspot_sync_runs_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/hubspot-sync-runs/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Read-only history of HubSpot sync runs scoped to the requesting user's company.\n\nIncludes both view-scoped runs (auto-trigger and manual `hubspot-sync` action on\nsaved views) and view-null runs (Create Leads via `CrmCompanyViewSet`).\n\n- View-scoped runs are visible to the company that owns the saved view.\n- View-null (Create Leads) runs are visible to the company of the user who\n triggered them." }, { "info": { "name": "api_v1_crm_import_runs_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/import-runs/", "params": [ { "name": "ordering", "value": "", "type": "query", "description": "Which field to use when ordering the results." }, { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Read-only history of CRM import runs scoped to the requesting user's company." }, { "info": { "name": "api_v1_crm_import_runs_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/import-runs/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Read-only history of CRM import runs scoped to the requesting user's company." }, { "info": { "name": "api_v1_crm_saved_views_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/saved-views/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM saved views.\n\nAll MoR users in the same company can list, load, update, and delete views.\n\nSaving a view auto-triggers a HubSpot View Sync: POST creates always trigger,\nPATCH/PUT trigger only when `config` changes. Renames and column-only edits do\nnot trigger. Frontends should poll `latest_hubspot_sync_run` (embedded on the\nserializer) to render progress." }, { "info": { "name": "api_v1_crm_saved_views_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/saved-views/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM saved views.\n\nAll MoR users in the same company can list, load, update, and delete views.\n\nSaving a view auto-triggers a HubSpot View Sync: POST creates always trigger,\nPATCH/PUT trigger only when `config` changes. Renames and column-only edits do\nnot trigger. Frontends should poll `latest_hubspot_sync_run` (embedded on the\nserializer) to render progress." }, { "info": { "name": "api_v1_crm_saved_views_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/saved-views/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM saved views.\n\nAll MoR users in the same company can list, load, update, and delete views.\n\nSaving a view auto-triggers a HubSpot View Sync: POST creates always trigger,\nPATCH/PUT trigger only when `config` changes. Renames and column-only edits do\nnot trigger. Frontends should poll `latest_hubspot_sync_run` (embedded on the\nserializer) to render progress." }, { "info": { "name": "api_v1_crm_saved_views_update", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/api/v1/crm/saved-views/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM saved views.\n\nAll MoR users in the same company can list, load, update, and delete views.\n\nSaving a view auto-triggers a HubSpot View Sync: POST creates always trigger,\nPATCH/PUT trigger only when `config` changes. Renames and column-only edits do\nnot trigger. Frontends should poll `latest_hubspot_sync_run` (embedded on the\nserializer) to render progress." }, { "info": { "name": "api_v1_crm_saved_views_partial_update", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v1/crm/saved-views/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM saved views.\n\nAll MoR users in the same company can list, load, update, and delete views.\n\nSaving a view auto-triggers a HubSpot View Sync: POST creates always trigger,\nPATCH/PUT trigger only when `config` changes. Renames and column-only edits do\nnot trigger. Frontends should poll `latest_hubspot_sync_run` (embedded on the\nserializer) to render progress." }, { "info": { "name": "api_v1_crm_saved_views_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/crm/saved-views/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "CRUD for CRM saved views.\n\nAll MoR users in the same company can list, load, update, and delete views.\n\nSaving a view auto-triggers a HubSpot View Sync: POST creates always trigger,\nPATCH/PUT trigger only when `config` changes. Renames and column-only edits do\nnot trigger. Frontends should poll `latest_hubspot_sync_run` (embedded on the\nserializer) to render progress." }, { "info": { "name": "Trigger enrichment on a saved view", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/saved-views/:uuid/enrich/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Trigger async enrichment of CRM companies in this saved view.\n\nCreates an EnrichmentRun and dispatches a Celery task.\nReturns 202 with the run_uuid for status polling." }, { "info": { "name": "Get enrichment run status and progress", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/saved-views/:uuid/enrich/:run_uuid/status/", "params": [ { "name": "run_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Poll the status and progress of an enrichment run." }, { "info": { "name": "Re-trigger HubSpot View Sync for a saved view", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/crm/saved-views/:uuid/hubspot-sync/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Manually re-trigger the read-only HubSpot View Sync.\n\nSaving a view already auto-dispatches a sync; this endpoint is for re-running\nit (e.g. after a failure, or to clear stale state when an earlier sync was\nskipped because one was already in progress). Returns 202 with the run_uuid\nfor status polling, or 409 if a sync is already pending or in progress." }, { "info": { "name": "Get HubSpot View Sync run status and progress", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/saved-views/:uuid/hubspot-sync/:run_uuid/status/", "params": [ { "name": "run_uuid", "value": "", "type": "path" }, { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Poll the status and progress of a View Sync run." }, { "info": { "name": "api_v1_crm_settings_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/crm/settings/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Singleton CRM settings for the authenticated user's company.\n\nGET /api/v1/crm/settings/ — returns settings, auto-creating with defaults if absent.\nPATCH /api/v1/crm/settings/ — updates one or more settings fields.\nPUT /api/v1/crm/settings/ — full replacement of all settings fields." }, { "info": { "name": "api_v1_crm_settings_update", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/api/v1/crm/settings/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Singleton CRM settings for the authenticated user's company.\n\nGET /api/v1/crm/settings/ — returns settings, auto-creating with defaults if absent.\nPATCH /api/v1/crm/settings/ — updates one or more settings fields.\nPUT /api/v1/crm/settings/ — full replacement of all settings fields." }, { "info": { "name": "api_v1_crm_settings_partial_update", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v1/crm/settings/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Singleton CRM settings for the authenticated user's company.\n\nGET /api/v1/crm/settings/ — returns settings, auto-creating with defaults if absent.\nPATCH /api/v1/crm/settings/ — updates one or more settings fields.\nPUT /api/v1/crm/settings/ — full replacement of all settings fields." }, { "info": { "name": "api_v1_insights_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/insights/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Buyer-scoped insights feed.\n\nReturns cursor-paginated insights, newest first. The queryset surfaces both\ninsights bound to the authenticated user's company AND cross-portfolio\ninsights with ``company IS NULL`` (e.g. industry trends, investor signals).\n``retrieve`` (by ``uuid``) backs the insights-recommender's ``get_insight`` MCP\ntool; it stays scoped by the same ``get_queryset``.\n\nFilter params: ``insight_type``, ``source``, ``sector``." }, { "info": { "name": "api_v1_integrations_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/integrations/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Surface for third-party connector listing, connect-initiation, and revoke.\n\nTokens are brokered by AgentCore Identity; this viewset only manages the\nConnectorConnection mirror table and the audit trail." }, { "info": { "name": "api_v1_integrations_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/integrations/:provider/", "params": [ { "name": "provider", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Surface for third-party connector listing, connect-initiation, and revoke.\n\nTokens are brokered by AgentCore Identity; this viewset only manages the\nConnectorConnection mirror table and the audit trail." }, { "info": { "name": "api_v1_integrations_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/integrations/:provider/", "params": [ { "name": "provider", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Surface for third-party connector listing, connect-initiation, and revoke.\n\nTokens are brokered by AgentCore Identity; this viewset only manages the\nConnectorConnection mirror table and the audit trail." }, { "info": { "name": "api_v1_integrations_agent_token_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/integrations/:provider/agent-token/", "params": [ { "name": "provider", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "Resolve a third-party access token for an agent runtime.\n\nAuthenticated via the inbound agent JWT (audience\n``opply-agents``). The subject (user vs company) is derived\nfrom ``ConnectorDefinition.kind`` — callers never specify it.\n\nThe caller MAY send ``company_uuid`` in the JSON body; if so,\nwe use that company after verifying the JWT user is an employee\nof it. If absent, we fall back to ``user.get_company()`` — the\nsingle-company case Opply assumes today. The check keeps the\nendpoint safe the d" }, { "info": { "name": "integrations_callback", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/integrations/:provider/callback/", "params": [ { "name": "provider", "value": "", "type": "path" }, { "name": "session_id", "value": "", "type": "query", "description": "The `sessionUri` returned by AgentCore Identity on initiate, sent back as a query param after consent." } ] }, "docs": "OAuth callback. AgentCore Identity redirects the user's browser here after they complete consent on the third-party provider; we finalize the ConnectorConnection by calling verify and bounce the browser back to the FE settings page with a `result=` query string." }, { "info": { "name": "api_v1_integrations_connect_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/integrations/:provider/connect/", "params": [ { "name": "provider", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Surface for third-party connector listing, connect-initiation, and revoke.\n\nTokens are brokered by AgentCore Identity; this viewset only manages the\nConnectorConnection mirror table and the audit trail." }, { "info": { "name": "api_v1_integrations_verify_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/integrations/:provider/verify/", "params": [ { "name": "provider", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Probe whether this connector's stored token is still usable for the\ncaller's company, self-healing the row in both directions: a stale\n``CONNECTED`` row is downgraded to ``NEEDS_RECONNECT`` when the broker\ncan no longer resolve a token, and a ``NEEDS_RECONNECT`` row is lifted\nback to ``CONNECTED`` when the broker resolves a live token again.\n\nThe FE calls this before kicking off a connector-driven flow (e.g. the\nonboarding Xero import) so a dead/expired token surfaces a \"reconnect\"\nCTA up front " }, { "info": { "name": "api_v1_integrations_plaid_disconnect_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/integrations/plaid/disconnect/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Disconnect Plaid entirely — revoke every Item and the parent connection.\n\nBacks the single per-provider \"Disconnect\" CTA on the connector card\n(the generic ``DELETE /integrations/plaid/`` returns 405 for resolver-backed\nconnectors). Per-Item revoke lives at ``plaid/items//``." }, { "info": { "name": "api_v1_integrations_plaid_exchange_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/integrations/plaid/exchange/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Shared admin gate for the per-tenant Plaid lifecycle endpoints." }, { "info": { "name": "api_v1_integrations_plaid_items_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/integrations/plaid/items/:item_uuid/", "params": [ { "name": "item_uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Shared admin gate for the per-tenant Plaid lifecycle endpoints." }, { "info": { "name": "api_v1_integrations_plaid_link_token_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/integrations/plaid/link-token/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Shared admin gate for the per-tenant Plaid lifecycle endpoints." }, { "info": { "name": "api_v1_integrations_plaid_webhook_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/integrations/plaid/webhook/" }, "docs": "Unauthenticated Plaid webhook sink. Identity comes from the verified JWT,\nnever from ``request.user`` (Plaid carries no session)." }, { "info": { "name": "api_v1_integrations_unleashed_connect_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/integrations/unleashed/connect/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Shared admin gate for the per-tenant Unleashed lifecycle endpoints." }, { "info": { "name": "api_v1_integrations_unleashed_disconnect_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/integrations/unleashed/disconnect/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Disconnect Unleashed — delete the stored credentials and revoke the connection.\n\nBacks the single per-provider \"Disconnect\" CTA on the connector card (the\ngeneric ``DELETE /integrations/unleashed/`` returns 405 for resolver-backed\nconnectors)." }, { "info": { "name": "api_v1_mcp_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/mcp" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_mcp_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/mcp" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_mcp_create_2", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/mcp/" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_mcp_destroy_2", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/mcp/" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_mcp_access_requests_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/mcp/access-requests/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Access request workflow.\n\nAdmin:\n GET /api/v1/mcp/access-requests/ → pending requests for the company\n PATCH /api/v1/mcp/access-requests/{uuid}/ → approve or deny\n\nMember:\n POST /api/v1/mcp/access-requests/ → submit a request\n GET /api/v1/mcp/access-requests/ → own requests" }, { "info": { "name": "api_v1_mcp_access_requests_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/mcp/access-requests/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Access request workflow.\n\nAdmin:\n GET /api/v1/mcp/access-requests/ → pending requests for the company\n PATCH /api/v1/mcp/access-requests/{uuid}/ → approve or deny\n\nMember:\n POST /api/v1/mcp/access-requests/ → submit a request\n GET /api/v1/mcp/access-requests/ → own requests" }, { "info": { "name": "api_v1_mcp_access_requests_review_partial_update", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v1/mcp/access-requests/:uuid/review/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Admin approves or denies an access request." }, { "info": { "name": "api_v1_mcp_audit_log_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/mcp/audit-log/", "params": [ { "name": "ordering", "value": "", "type": "query", "description": "Which field to use when ordering the results." }, { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Read-only audit log.\n\nAdmin: all entries for the company, filterable.\nMember: own entries only.\n\nGET /api/v1/mcp/audit-log/?tool_name=&status=&date_from=&date_to=" }, { "info": { "name": "api_v1_mcp_tools_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/mcp/tools/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "GET /api/v1/mcp/tools/ — list available MCP tools.\n\nReturns tools filtered by the caller's token scopes (if OAuth Bearer),\nor all tools for Token-auth users (admin/staff)." }, { "info": { "name": "api_v1_mcp_unleashed_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/mcp/unleashed" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_mcp_unleashed_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/mcp/unleashed" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_mcp_unleashed_create_2", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/mcp/unleashed/" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_mcp_unleashed_destroy_2", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/mcp/unleashed/" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_mcp_user_access_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/mcp/user-access/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Admin-only management of per-user MCP access records.\n\nGET /api/v1/mcp/user-access/ → list all access records for the company\nPOST /api/v1/mcp/user-access/ → grant access to a user\nPATCH /api/v1/mcp/user-access/{uuid}/ → update scopes/enabled\nDELETE /api/v1/mcp/user-access/{uuid}/ → revoke access\n\nGET /api/v1/mcp/user-access/me/ → any authenticated user's own record" }, { "info": { "name": "api_v1_mcp_user_access_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/mcp/user-access/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Admin-only management of per-user MCP access records.\n\nGET /api/v1/mcp/user-access/ → list all access records for the company\nPOST /api/v1/mcp/user-access/ → grant access to a user\nPATCH /api/v1/mcp/user-access/{uuid}/ → update scopes/enabled\nDELETE /api/v1/mcp/user-access/{uuid}/ → revoke access\n\nGET /api/v1/mcp/user-access/me/ → any authenticated user's own record" }, { "info": { "name": "api_v1_mcp_user_access_partial_update", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v1/mcp/user-access/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Admin-only management of per-user MCP access records.\n\nGET /api/v1/mcp/user-access/ → list all access records for the company\nPOST /api/v1/mcp/user-access/ → grant access to a user\nPATCH /api/v1/mcp/user-access/{uuid}/ → update scopes/enabled\nDELETE /api/v1/mcp/user-access/{uuid}/ → revoke access\n\nGET /api/v1/mcp/user-access/me/ → any authenticated user's own record" }, { "info": { "name": "api_v1_mcp_user_access_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/mcp/user-access/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Admin-only management of per-user MCP access records.\n\nGET /api/v1/mcp/user-access/ → list all access records for the company\nPOST /api/v1/mcp/user-access/ → grant access to a user\nPATCH /api/v1/mcp/user-access/{uuid}/ → update scopes/enabled\nDELETE /api/v1/mcp/user-access/{uuid}/ → revoke access\n\nGET /api/v1/mcp/user-access/me/ → any authenticated user's own record" }, { "info": { "name": "api_v1_mcp_user_access_me_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/mcp/user-access/me/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Return the current user's own MCP access record." }, { "info": { "name": "api_v1_mcp_zendesk_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/mcp/zendesk" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_mcp_zendesk_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/mcp/zendesk" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_mcp_zendesk_create_2", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/mcp/zendesk/" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_mcp_zendesk_destroy_2", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/mcp/zendesk/" }, "docs": "MCP HTTP transport endpoint.\n\nMounted at one path per server (``/api/v1/mcp/`` for the main Opply MCP,\n``/api/v1/mcp/zendesk/``, ``/api/v1/mcp/unleashed/`` — see ``urls.py``); the\n``server`` attribute set via ``as_view(server=...)`` selects which registry\nthe route scopes tools to.\n\nPOST — JSON-RPC request (initialize / tools/list / tools/call)\nDELETE — terminate session\n\nGET is intentionally not implemented (SSE streaming is not supported in PR 2)." }, { "info": { "name": "api_v1_oauth_applications_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/oauth/applications/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Admin-only management of OAuth2 Applications (django-oauth-toolkit).\n\nGET /api/v1/oauth/applications/ → list applications owned by the requesting user's company\nPOST /api/v1/oauth/applications/ → register a new application\nDELETE /api/v1/oauth/applications/{pk}/ → revoke (delete) an application" }, { "info": { "name": "api_v1_oauth_applications_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/oauth/applications/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Admin-only management of OAuth2 Applications (django-oauth-toolkit).\n\nGET /api/v1/oauth/applications/ → list applications owned by the requesting user's company\nPOST /api/v1/oauth/applications/ → register a new application\nDELETE /api/v1/oauth/applications/{pk}/ → revoke (delete) an application" }, { "info": { "name": "api_v1_oauth_applications_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/oauth/applications/:id/", "params": [ { "name": "id", "value": "", "type": "path", "description": "A unique integer value identifying this application." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Admin-only management of OAuth2 Applications (django-oauth-toolkit).\n\nGET /api/v1/oauth/applications/ → list applications owned by the requesting user's company\nPOST /api/v1/oauth/applications/ → register a new application\nDELETE /api/v1/oauth/applications/{pk}/ → revoke (delete) an application" }, { "info": { "name": "api_v1_oauth_register_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/oauth/register/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "RFC 7591 Dynamic Client Registration endpoint.\n\nAccepts client metadata and creates a DOT Application. Only localhost\nredirect URIs are permitted (MCP clients run on the user's machine)." }, { "info": { "name": "api_v1_rapyd_cypress_create_beneficiary_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/rapyd/cypress/create_beneficiary", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_rapyd_cypress_force_kyb_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/rapyd/cypress/force_kyb", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_recommendations_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/recommendations/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Buyer-scoped recommendations (the agent-curated nudge feed).\n\nScoped to ``audience=buyer`` recommendations whose subject is the\nauthenticated user's company. ``list`` defaults to ``state=active`` (the\nfeed); pass ``?state=`` for the History view. The CTA/lifecycle actions\n(dismiss/snooze/act/restore) and the agent write-path actions\n(create/supersede/mark_stale, behind the MCP tools) all live here.\n\nImpact is never stored on a recommendation — it is read from the cited\ninsight(s) at render time " }, { "info": { "name": "api_v1_research_feedbacks_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/research/feedbacks/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_research_feedbacks_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/research/feedbacks/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_research_feedbacks_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/research/feedbacks/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_research_feedbacks_update", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/api/v1/research/feedbacks/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_research_feedbacks_partial_update", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v1/research/feedbacks/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "api_v1_research_feedbacks_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/research/feedbacks/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } } }, { "info": { "name": "Get category taxonomy", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/taxonomy/get-tree/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Returns the full taxonomy as a nested tree" }, { "info": { "name": "api_v2_notifications_company_overrides_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v2/notifications/company-overrides/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Company-wide overrides set by company admins.\n\nQuerysets are scoped to ``request.user_company`` (set by ``CompanyValidationMiddleware``)\nso an admin in one company can't read or modify another's overrides." }, { "info": { "name": "api_v2_notifications_company_overrides_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v2/notifications/company-overrides/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Company-wide overrides set by company admins.\n\nQuerysets are scoped to ``request.user_company`` (set by ``CompanyValidationMiddleware``)\nso an admin in one company can't read or modify another's overrides." }, { "info": { "name": "api_v2_notifications_company_overrides_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v2/notifications/company-overrides/:id/", "params": [ { "name": "id", "value": "", "type": "path", "description": "A unique integer value identifying this company notification override." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Company-wide overrides set by company admins.\n\nQuerysets are scoped to ``request.user_company`` (set by ``CompanyValidationMiddleware``)\nso an admin in one company can't read or modify another's overrides." }, { "info": { "name": "api_v2_notifications_company_overrides_partial_update", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v2/notifications/company-overrides/:id/", "params": [ { "name": "id", "value": "", "type": "path", "description": "A unique integer value identifying this company notification override." } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Company-wide overrides set by company admins.\n\nQuerysets are scoped to ``request.user_company`` (set by ``CompanyValidationMiddleware``)\nso an admin in one company can't read or modify another's overrides." }, { "info": { "name": "api_v2_notifications_company_overrides_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v2/notifications/company-overrides/:id/", "params": [ { "name": "id", "value": "", "type": "path", "description": "A unique integer value identifying this company notification override." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Company-wide overrides set by company admins.\n\nQuerysets are scoped to ``request.user_company`` (set by ``CompanyValidationMiddleware``)\nso an admin in one company can't read or modify another's overrides." }, { "info": { "name": "api_v2_notifications_debug_dispatch_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v2/notifications/debug-dispatch/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "``POST /api/v2/notifications/debug-dispatch/``\n\nBody fields:\n - ``audience_type``: one of ``user`` / ``company`` / ``user_type`` / ``all``.\n - ``target_user_email`` (USER): the recipient's email. Defaults to the caller.\n - ``target_company_uuid`` (COMPANY): the company to broadcast to. Defaults\n to the caller's company.\n - ``user_type`` (USER_TYPE): brand / supplier / merchant_of_record.\n - ``kind_code``: NotificationKind to dispatch. Defaults to ``order_created``.\n - ``title_override``" }, { "info": { "name": "api_v2_notifications_me_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v2/notifications/me/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." }, { "name": "state", "value": "", "type": "query", "description": "``unread`` hides READ rows (used by the bell popover); ``all`` (the default) returns both READ and unread rows for the full /notifications page. ARCHIVED rows are always excluded." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "In-app inbox for the authenticated user.\n\n``GET /api/v2/notifications/me/`` — paginated list of the user's notifications.\n``GET /api/v2/notifications/me/unread-count/`` — bell-badge count.\n``POST /api/v2/notifications/me/{uuid}/read/`` — mark one as read.\n``POST /api/v2/notifications/me/{uuid}/archive/`` — dismiss one.\n``POST /api/v2/notifications/me/mark-all-read/`` — bulk-read every unread row." }, { "info": { "name": "api_v2_notifications_me_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v2/notifications/me/:uuid/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "In-app inbox for the authenticated user.\n\n``GET /api/v2/notifications/me/`` — paginated list of the user's notifications.\n``GET /api/v2/notifications/me/unread-count/`` — bell-badge count.\n``POST /api/v2/notifications/me/{uuid}/read/`` — mark one as read.\n``POST /api/v2/notifications/me/{uuid}/archive/`` — dismiss one.\n``POST /api/v2/notifications/me/mark-all-read/`` — bulk-read every unread row." }, { "info": { "name": "api_v2_notifications_me_archive_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v2/notifications/me/:uuid/archive/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "In-app inbox for the authenticated user.\n\n``GET /api/v2/notifications/me/`` — paginated list of the user's notifications.\n``GET /api/v2/notifications/me/unread-count/`` — bell-badge count.\n``POST /api/v2/notifications/me/{uuid}/read/`` — mark one as read.\n``POST /api/v2/notifications/me/{uuid}/archive/`` — dismiss one.\n``POST /api/v2/notifications/me/mark-all-read/`` — bulk-read every unread row." }, { "info": { "name": "api_v2_notifications_me_read_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v2/notifications/me/:uuid/read/", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "In-app inbox for the authenticated user.\n\n``GET /api/v2/notifications/me/`` — paginated list of the user's notifications.\n``GET /api/v2/notifications/me/unread-count/`` — bell-badge count.\n``POST /api/v2/notifications/me/{uuid}/read/`` — mark one as read.\n``POST /api/v2/notifications/me/{uuid}/archive/`` — dismiss one.\n``POST /api/v2/notifications/me/mark-all-read/`` — bulk-read every unread row." }, { "info": { "name": "api_v2_notifications_me_mark_all_read_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v2/notifications/me/mark-all-read/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "In-app inbox for the authenticated user.\n\n``GET /api/v2/notifications/me/`` — paginated list of the user's notifications.\n``GET /api/v2/notifications/me/unread-count/`` — bell-badge count.\n``POST /api/v2/notifications/me/{uuid}/read/`` — mark one as read.\n``POST /api/v2/notifications/me/{uuid}/archive/`` — dismiss one.\n``POST /api/v2/notifications/me/mark-all-read/`` — bulk-read every unread row." }, { "info": { "name": "api_v2_notifications_me_unread_count_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v2/notifications/me/unread-count/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "In-app inbox for the authenticated user.\n\n``GET /api/v2/notifications/me/`` — paginated list of the user's notifications.\n``GET /api/v2/notifications/me/unread-count/`` — bell-badge count.\n``POST /api/v2/notifications/me/{uuid}/read/`` — mark one as read.\n``POST /api/v2/notifications/me/{uuid}/archive/`` — dismiss one.\n``POST /api/v2/notifications/me/mark-all-read/`` — bulk-read every unread row." }, { "info": { "name": "api_v2_notifications_preferences_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v2/notifications/preferences/", "params": [ { "name": "page", "value": "", "type": "query", "description": "A page number within the paginated result set." }, { "name": "page_size", "value": "", "type": "query", "description": "Number of results to return per page." } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Per-user opt-outs.\n\nListed and mutated only by the owner. Mandatory kinds are accepted at the\nserializer layer but ignored at dispatch time." }, { "info": { "name": "api_v2_notifications_preferences_create", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v2/notifications/preferences/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Per-user opt-outs.\n\nListed and mutated only by the owner. Mandatory kinds are accepted at the\nserializer layer but ignored at dispatch time." }, { "info": { "name": "api_v2_notifications_preferences_retrieve", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v2/notifications/preferences/:id/", "params": [ { "name": "id", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Per-user opt-outs.\n\nListed and mutated only by the owner. Mandatory kinds are accepted at the\nserializer layer but ignored at dispatch time." }, { "info": { "name": "api_v2_notifications_preferences_update", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/api/v2/notifications/preferences/:id/", "params": [ { "name": "id", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Per-user opt-outs.\n\nListed and mutated only by the owner. Mandatory kinds are accepted at the\nserializer layer but ignored at dispatch time." }, { "info": { "name": "api_v2_notifications_preferences_partial_update", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v2/notifications/preferences/:id/", "params": [ { "name": "id", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Per-user opt-outs.\n\nListed and mutated only by the owner. Mandatory kinds are accepted at the\nserializer layer but ignored at dispatch time." }, { "info": { "name": "api_v2_notifications_preferences_destroy", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/api/v2/notifications/preferences/:id/", "params": [ { "name": "id", "value": "", "type": "path" } ], "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Per-user opt-outs.\n\nListed and mutated only by the owner. Mandatory kinds are accepted at the\nserializer layer but ignored at dispatch time." }, { "info": { "name": "api_v2_notifications_preferences_categories_list", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v2/notifications/preferences/categories/", "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "User-facing list of toggleable notification categories.\n\nReturns every non-``SYSTEM`` category that has at least one\n``NotificationKind`` (registered in :data:`ALL_KINDS`) **relevant to\nthe caller's company type** — so the Settings page never renders a\ntoggle the backend can't act on, and never one for notifications the\ncaller can't receive. ``SYSTEM`` is always excluded: those kinds are\nmandatory and render as the FE's \"always-on\" row, not a toggle.\n\nCompany-type scoping is driven by ``Notifica" }, { "info": { "name": "api_v2_notifications_preferences_upsert_update", "type": "http" }, "http": { "method": "PUT", "url": "{{baseUrl}}/api/v2/notifications/preferences/upsert/", "body": { "type": "json", "data": "{}" }, "auth": { "type": "apikey", "key": "Authorization", "value": "{{Authorization}}", "placement": "header" } }, "docs": "Idempotent write for a single ``(category, channel)`` preference row.\n\nThe viewset's POST/PATCH pair require the caller to know the row's\nprimary key. The Settings UI doesn't — it just wants \"set EMAIL for\nORDERS to disabled\". This action collapses the lookup+write into one\ncall and keeps the API surface clean on the FE side." } ] } ], "bundled": true }