{ "openapi": "3.0.0", "info": { "contact": { "email": "support@getconvoy.io", "name": "Convoy Support", "url": "https://getconvoy.io/docs" }, "description": "Convoy is a fast and secure webhooks proxy. This document contains datastore's API specification.", "license": { "name": "Mozilla Public License 2.0", "url": "https://www.mozilla.org/en-US/MPL/2.0/" }, "termsOfService": "https://getconvoy.io/terms", "title": "Convoy API Reference", "version": "26.3.5" }, "servers": [ { "url": "https://us.getconvoy.cloud/api", "description": "US Region" }, { "url": "https://eu.getconvoy.cloud/api", "description": "EU Region" } ], "paths": { "/v1/projects": { "get": { "parameters": [ { "description": "Organisation ID", "in": "query", "name": "orgID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "items": { "$ref": "#/components/schemas/models.ProjectResponse" }, "type": "array" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Projects" ], "description": "This endpoint fetches projects for an organisation. Authenticate with a personal API key or JWT and pass the organisation id as the orgID query parameter.", "operationId": "GetProjects", "summary": "List all projects" }, "post": { "parameters": [ { "description": "Organisation ID", "in": "query", "name": "orgID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.CreateProjectResponse" } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "402": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Payment Required" }, "403": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Projects" ], "description": "This endpoint creates a project. Authenticate with a personal API key or JWT and pass the organisation id as the orgID query parameter. The response includes the project and a one-time project API key.", "operationId": "CreateProject", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.CreateProject" } } }, "description": "Project Details", "required": true }, "summary": "Create a project" } }, "/v1/projects/{projectID}": { "delete": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Projects" ], "description": "This endpoint deletes a project", "operationId": "DeleteProject", "summary": "Delete a project" }, "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.ProjectResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Projects" ], "description": "This endpoint fetches a project by its id", "operationId": "GetProject", "summary": "Retrieve a project" }, "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "202": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.ProjectResponse" } }, "type": "object" } ] } } }, "description": "Accepted" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Projects" ], "description": "This endpoint updates a project's name, logo, and config", "operationId": "UpdateProject", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.UpdateProject" } } }, "description": "Project Details", "required": true }, "summary": "Update a project" } }, "/v1/projects/{projectID}/endpoints": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "direction", "schema": { "enum": [ "next", "prev" ], "type": "string" }, "x-enum-varnames": [ "Next", "Prev" ] }, { "description": "A pagination cursor to fetch the next page of a list", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "next_page_cursor", "schema": { "type": "string" } }, { "description": "The owner ID of the endpoint", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "ownerId", "schema": { "type": "string" } }, { "description": "The number of items to return per page", "example": 20, "in": "query", "name": "perPage", "schema": { "type": "integer" } }, { "description": "A pagination cursor to fetch the previous page of a list", "example": "01H0JATTVCXZK8FRDX1M1JN3QY", "in": "query", "name": "prev_page_cursor", "schema": { "type": "string" } }, { "description": "The name of the endpoint", "example": "endpoint-1", "in": "query", "name": "q", "schema": { "type": "string" } }, { "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", "example": "ASC | DESC", "in": "query", "name": "sort", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/models.PagedResponse" }, { "properties": { "content": { "items": { "$ref": "#/components/schemas/models.EndpointResponse" }, "type": "array" } }, "type": "object" } ] } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Endpoints" ], "description": "This endpoint fetches an endpoints", "operationId": "GetEndpoints", "summary": "List all endpoints" }, "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EndpointResponse" } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Endpoints" ], "description": "This endpoint creates an endpoint", "operationId": "CreateEndpoint", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.CreateEndpoint" } } }, "description": "Endpoint Details", "required": true }, "summary": "Create an endpoint" } }, "/v1/projects/{projectID}/endpoints/oauth2/test": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.TestOAuth2Response" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Endpoints" ], "description": "This endpoint tests the OAuth2 connection by attempting to exchange a token", "operationId": "TestOAuth2Connection", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.TestOAuth2Request" } } }, "description": "OAuth2 Configuration", "required": true }, "summary": "Test OAuth2 connection" } }, "/v1/projects/{projectID}/endpoints/{endpointID}": { "delete": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Endpoint ID", "in": "path", "name": "endpointID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Endpoints" ], "description": "This endpoint deletes an endpoint", "operationId": "DeleteEndpoint", "summary": "Delete endpoint" }, "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Endpoint ID", "in": "path", "name": "endpointID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EndpointResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Endpoints" ], "description": "This endpoint fetches an endpoint", "operationId": "GetEndpoint", "summary": "Retrieve endpoint" }, "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Endpoint ID", "in": "path", "name": "endpointID", "required": true, "schema": { "type": "string" } } ], "responses": { "202": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EndpointResponse" } }, "type": "object" } ] } } }, "description": "Accepted" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Endpoints" ], "description": "This endpoint updates an endpoint", "operationId": "UpdateEndpoint", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.UpdateEndpoint" } } }, "description": "Endpoint Details", "required": true }, "summary": "Update an endpoint" } }, "/v1/projects/{projectID}/endpoints/{endpointID}/activate": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Endpoint ID", "in": "path", "name": "endpointID", "required": true, "schema": { "type": "string" } } ], "responses": { "202": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EndpointResponse" } }, "type": "object" } ] } } }, "description": "Accepted" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Endpoints" ], "description": "Activated an inactive endpoint", "operationId": "ActivateEndpoint", "summary": "Activate endpoint" } }, "/v1/projects/{projectID}/endpoints/{endpointID}/expire_secret": { "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Endpoint ID", "in": "path", "name": "endpointID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EndpointResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Endpoints" ], "description": "This endpoint expires and re-generates the endpoint secret.", "operationId": "ExpireSecret", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.ExpireSecret" } } }, "description": "Expire Secret Body Parameters", "required": true }, "summary": "Roll endpoint secret" } }, "/v1/projects/{projectID}/endpoints/{endpointID}/pause": { "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Endpoint ID", "in": "path", "name": "endpointID", "required": true, "schema": { "type": "string" } } ], "responses": { "202": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EndpointResponse" } }, "type": "object" } ] } } }, "description": "Accepted" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Endpoints" ], "description": "Toggles an endpoint's status between active and paused states", "operationId": "PauseEndpoint", "summary": "Pause endpoint" } }, "/v1/projects/{projectID}/event-types": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "items": { "$ref": "#/components/schemas/models.EventTypeResponse" }, "type": "array" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "EventTypes" ], "description": "This endpoint fetches the project's event types", "operationId": "GetEventTypes", "summary": "Retrieves a project's event types" }, "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EventTypeResponse" } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "EventTypes" ], "description": "This endpoint creates an event type", "operationId": "CreateEventType", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.CreateEventType" } } }, "description": "Event Type Details", "required": true }, "summary": "Create an event type" } }, "/v1/projects/{projectID}/event-types/import": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "items": { "$ref": "#/components/schemas/models.EventTypeResponse" }, "type": "array" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "EventTypes" ], "description": "This endpoint imports event types from an OpenAPI specification", "operationId": "ImportOpenApiSpec", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.ImportOpenAPISpec" } } }, "description": "OpenAPI specification", "required": true }, "summary": "Import event types from OpenAPI spec" } }, "/v1/projects/{projectID}/event-types/{eventTypeId}": { "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Event Type ID", "in": "path", "name": "eventTypeId", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EventTypeResponse" } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "EventTypes" ], "description": "This endpoint updates an event type", "operationId": "UpdateEventType", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.UpdateEventType" } } }, "description": "Event Type Details", "required": true }, "summary": "Updates an event type" } }, "/v1/projects/{projectID}/event-types/{eventTypeId}/deprecate": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Event Type ID", "in": "path", "name": "eventTypeId", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EventTypeResponse" } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "EventTypes" ], "description": "This endpoint deprecates an event type", "operationId": "DeprecateEventType", "summary": "Deprecates an event type" } }, "/v1/projects/{projectID}/eventdeliveries": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "direction", "schema": { "enum": [ "next", "prev" ], "type": "string" }, "x-enum-varnames": [ "Next", "Prev" ] }, { "description": "The end date", "example": "2008-05-02T15:04:05", "in": "query", "name": "endDate", "schema": { "type": "string" } }, { "description": "A list of endpoint IDs to filter by", "in": "query", "name": "endpointId", "schema": { "items": { "type": "string" }, "type": "array" }, "style": "form" }, { "description": "Event ID to filter by", "in": "query", "name": "eventId", "schema": { "type": "string" } }, { "description": "EventType to filter by", "in": "query", "name": "event_type", "schema": { "type": "string" } }, { "description": "IdempotencyKey to filter by", "in": "query", "name": "idempotencyKey", "schema": { "type": "string" } }, { "description": "A pagination cursor to fetch the next page of a list", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "next_page_cursor", "schema": { "type": "string" } }, { "description": "The number of items to return per page", "example": 20, "in": "query", "name": "perPage", "schema": { "type": "integer" } }, { "description": "A pagination cursor to fetch the previous page of a list", "example": "01H0JATTVCXZK8FRDX1M1JN3QY", "in": "query", "name": "prev_page_cursor", "schema": { "type": "string" } }, { "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", "example": "ASC | DESC", "in": "query", "name": "sort", "schema": { "type": "string" } }, { "description": "The start date", "example": "2006-01-02T15:04:05", "in": "query", "name": "startDate", "schema": { "type": "string" } }, { "description": "A list of event delivery statuses to filter by", "in": "query", "name": "status", "schema": { "items": { "type": "string" }, "type": "array" }, "style": "form" }, { "description": "SubscriptionID to filter by", "in": "query", "name": "subscriptionId", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/models.PagedResponse" }, { "properties": { "content": { "items": { "$ref": "#/components/schemas/models.EventDeliveryResponse" }, "type": "array" } }, "type": "object" } ] } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Event Deliveries" ], "description": "This endpoint retrieves all event deliveries paginated.", "operationId": "GetEventDeliveriesPaged", "summary": "List all event deliveries" } }, "/v1/projects/{projectID}/eventdeliveries/batchretry": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "direction", "schema": { "enum": [ "next", "prev" ], "type": "string" }, "x-enum-varnames": [ "Next", "Prev" ] }, { "description": "The end date", "example": "2008-05-02T15:04:05", "in": "query", "name": "endDate", "schema": { "type": "string" } }, { "description": "A list of endpoint IDs to filter by", "in": "query", "name": "endpointId", "schema": { "items": { "type": "string" }, "type": "array" }, "style": "form" }, { "description": "Event ID to filter by", "in": "query", "name": "eventId", "schema": { "type": "string" } }, { "description": "EventType to filter by", "in": "query", "name": "event_type", "schema": { "type": "string" } }, { "description": "IdempotencyKey to filter by", "in": "query", "name": "idempotencyKey", "schema": { "type": "string" } }, { "description": "A pagination cursor to fetch the next page of a list", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "next_page_cursor", "schema": { "type": "string" } }, { "description": "The number of items to return per page", "example": 20, "in": "query", "name": "perPage", "schema": { "type": "integer" } }, { "description": "A pagination cursor to fetch the previous page of a list", "example": "01H0JATTVCXZK8FRDX1M1JN3QY", "in": "query", "name": "prev_page_cursor", "schema": { "type": "string" } }, { "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", "example": "ASC | DESC", "in": "query", "name": "sort", "schema": { "type": "string" } }, { "description": "The start date", "example": "2006-01-02T15:04:05", "in": "query", "name": "startDate", "schema": { "type": "string" } }, { "description": "A list of event delivery statuses to filter by", "in": "query", "name": "status", "schema": { "items": { "type": "string" }, "type": "array" }, "style": "form" }, { "description": "SubscriptionID to filter by", "in": "query", "name": "subscriptionId", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Event Deliveries" ], "description": "This endpoint batch retries multiple event deliveries at once.", "operationId": "BatchRetryEventDelivery", "summary": "Batch retry event delivery" } }, "/v1/projects/{projectID}/eventdeliveries/forceresend": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Event Deliveries" ], "description": "This endpoint enables you retry a previously successful event delivery", "operationId": "ForceResendEventDeliveries", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.IDs" } } }, "description": "event delivery ids", "required": true }, "summary": "Force retry event delivery" } }, "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "event delivery id", "in": "path", "name": "eventDeliveryID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EventDeliveryResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Event Deliveries" ], "description": "This endpoint fetches an event delivery.", "operationId": "GetEventDelivery", "summary": "Retrieve an event delivery" } }, "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "event delivery id", "in": "path", "name": "eventDeliveryID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "items": { "$ref": "#/components/schemas/datastore.DeliveryAttempt" }, "type": "array" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Delivery Attempts" ], "description": "This endpoint fetches an app message's delivery attempts", "operationId": "GetDeliveryAttempts", "summary": "List delivery attempts" } }, "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts/{deliveryAttemptID}": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "event delivery id", "in": "path", "name": "eventDeliveryID", "required": true, "schema": { "type": "string" } }, { "description": "delivery attempt id", "in": "path", "name": "deliveryAttemptID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/datastore.DeliveryAttempt" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Delivery Attempts" ], "description": "This endpoint fetches an app event delivery attempt", "operationId": "GetDeliveryAttempt", "summary": "Retrieve a delivery attempt" } }, "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/resend": { "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "event delivery id", "in": "path", "name": "eventDeliveryID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EventDeliveryResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Event Deliveries" ], "description": "This endpoint retries an event delivery.", "operationId": "ResendEventDelivery", "summary": "Retry event delivery" } }, "/v1/projects/{projectID}/events": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "direction", "schema": { "enum": [ "next", "prev" ], "type": "string" }, "x-enum-varnames": [ "Next", "Prev" ] }, { "description": "The end date", "example": "2008-05-02T15:04:05", "in": "query", "name": "endDate", "schema": { "type": "string" } }, { "description": "A list of endpoint ids to filter by", "in": "query", "name": "endpointId", "schema": { "items": { "type": "string" }, "type": "array" }, "style": "form" }, { "description": "IdempotencyKey to filter by", "in": "query", "name": "idempotencyKey", "schema": { "type": "string" } }, { "description": "A pagination cursor to fetch the next page of a list", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "next_page_cursor", "schema": { "type": "string" } }, { "description": "The number of items to return per page", "example": 20, "in": "query", "name": "perPage", "schema": { "type": "integer" } }, { "description": "A pagination cursor to fetch the previous page of a list", "example": "01H0JATTVCXZK8FRDX1M1JN3QY", "in": "query", "name": "prev_page_cursor", "schema": { "type": "string" } }, { "description": "Any arbitrary value to filter the events payload", "in": "query", "name": "query", "schema": { "type": "string" } }, { "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", "example": "ASC | DESC", "in": "query", "name": "sort", "schema": { "type": "string" } }, { "description": "A list of Source IDs to filter the events by.", "in": "query", "name": "sourceId", "schema": { "items": { "type": "string" }, "type": "array" }, "style": "form" }, { "description": "The start date", "example": "2006-01-02T15:04:05", "in": "query", "name": "startDate", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/models.PagedResponse" }, { "properties": { "content": { "items": { "$ref": "#/components/schemas/models.EventResponse" }, "type": "array" } }, "type": "object" } ] } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Events" ], "description": "This endpoint fetches app events with pagination", "operationId": "GetEventsPaged", "summary": "List all events" }, "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Events" ], "description": "This endpoint creates an endpoint event", "operationId": "CreateEndpointEvent", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.CreateEvent" } } }, "description": "Event Details", "required": true }, "summary": "Create an event" } }, "/v1/projects/{projectID}/events/batchreplay": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "direction", "schema": { "enum": [ "next", "prev" ], "type": "string" }, "x-enum-varnames": [ "Next", "Prev" ] }, { "description": "The end date", "example": "2008-05-02T15:04:05", "in": "query", "name": "endDate", "schema": { "type": "string" } }, { "description": "A list of endpoint ids to filter by", "in": "query", "name": "endpointId", "schema": { "items": { "type": "string" }, "type": "array" }, "style": "form" }, { "description": "IdempotencyKey to filter by", "in": "query", "name": "idempotencyKey", "schema": { "type": "string" } }, { "description": "A pagination cursor to fetch the next page of a list", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "next_page_cursor", "schema": { "type": "string" } }, { "description": "The number of items to return per page", "example": 20, "in": "query", "name": "perPage", "schema": { "type": "integer" } }, { "description": "A pagination cursor to fetch the previous page of a list", "example": "01H0JATTVCXZK8FRDX1M1JN3QY", "in": "query", "name": "prev_page_cursor", "schema": { "type": "string" } }, { "description": "Any arbitrary value to filter the events payload", "in": "query", "name": "query", "schema": { "type": "string" } }, { "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", "example": "ASC | DESC", "in": "query", "name": "sort", "schema": { "type": "string" } }, { "description": "A list of Source IDs to filter the events by.", "in": "query", "name": "sourceId", "schema": { "items": { "type": "string" }, "type": "array" }, "style": "form" }, { "description": "The start date", "example": "2006-01-02T15:04:05", "in": "query", "name": "startDate", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "type": "string" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Events" ], "description": "This endpoint replays multiple events at once.", "operationId": "BatchReplayEvents", "summary": "Batch replay events" } }, "/v1/projects/{projectID}/events/broadcast": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EventResponse" } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Events" ], "description": "This endpoint creates a event that is broadcast to every endpoint whose subscription matches the given event type.", "operationId": "CreateBroadcastEvent", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.BroadcastEvent" } } }, "description": "Broadcast Event Details", "required": true }, "summary": "Create a broadcast event" } }, "/v1/projects/{projectID}/events/countbatchreplayevents": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "direction", "schema": { "enum": [ "next", "prev" ], "type": "string" }, "x-enum-varnames": [ "Next", "Prev" ] }, { "description": "The end date", "example": "2008-05-02T15:04:05", "in": "query", "name": "endDate", "schema": { "type": "string" } }, { "description": "A list of endpoint ids to filter by", "in": "query", "name": "endpointId", "schema": { "items": { "type": "string" }, "type": "array" }, "style": "form" }, { "description": "IdempotencyKey to filter by", "in": "query", "name": "idempotencyKey", "schema": { "type": "string" } }, { "description": "A pagination cursor to fetch the next page of a list", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "next_page_cursor", "schema": { "type": "string" } }, { "description": "The number of items to return per page", "example": 20, "in": "query", "name": "perPage", "schema": { "type": "integer" } }, { "description": "A pagination cursor to fetch the previous page of a list", "example": "01H0JATTVCXZK8FRDX1M1JN3QY", "in": "query", "name": "prev_page_cursor", "schema": { "type": "string" } }, { "description": "Any arbitrary value to filter the events payload", "in": "query", "name": "query", "schema": { "type": "string" } }, { "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", "example": "ASC | DESC", "in": "query", "name": "sort", "schema": { "type": "string" } }, { "description": "A list of Source IDs to filter the events by.", "in": "query", "name": "sourceId", "schema": { "items": { "type": "string" }, "type": "array" }, "style": "form" }, { "description": "The start date", "example": "2006-01-02T15:04:05", "in": "query", "name": "startDate", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.CountResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Events" ], "description": "This endpoint returns how many events would be affected by a batch replay with the given filters.", "operationId": "CountAffectedEvents", "summary": "Count events matching batch replay filters" } }, "/v1/projects/{projectID}/events/dynamic": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Events" ], "description": "This endpoint does not require creating endpoint and subscriptions ahead of time. Instead, you supply the endpoint and the payload, and Convoy delivers the events", "operationId": "CreateDynamicEvent", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.DynamicEvent" } } }, "description": "Event Details", "required": true }, "summary": "Dynamic Events" } }, "/v1/projects/{projectID}/events/fanout": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Events" ], "description": "This endpoint uses the owner_id to fan out an event to multiple endpoints.", "operationId": "CreateEndpointFanoutEvent", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.FanoutEvent" } } }, "description": "Event Details", "required": true }, "summary": "Fan out an event" } }, "/v1/projects/{projectID}/events/{eventID}": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "event id", "in": "path", "name": "eventID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EventResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Events" ], "description": "This endpoint retrieves an event", "operationId": "GetEndpointEvent", "summary": "Retrieve an event" } }, "/v1/projects/{projectID}/events/{eventID}/replay": { "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "event id", "in": "path", "name": "eventID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.EventResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Events" ], "description": "This endpoint replays an event afresh assuming it is a new event.", "operationId": "ReplayEndpointEvent", "summary": "Replay event" } }, "/v1/projects/{projectID}/meta-events": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "direction", "schema": { "enum": [ "next", "prev" ], "type": "string" }, "x-enum-varnames": [ "Next", "Prev" ] }, { "description": "The end date", "example": "2008-05-02T15:04:05", "in": "query", "name": "endDate", "schema": { "type": "string" } }, { "description": "A pagination cursor to fetch the next page of a list", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "next_page_cursor", "schema": { "type": "string" } }, { "description": "The number of items to return per page", "example": 20, "in": "query", "name": "perPage", "schema": { "type": "integer" } }, { "description": "A pagination cursor to fetch the previous page of a list", "example": "01H0JATTVCXZK8FRDX1M1JN3QY", "in": "query", "name": "prev_page_cursor", "schema": { "type": "string" } }, { "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", "example": "ASC | DESC", "in": "query", "name": "sort", "schema": { "type": "string" } }, { "description": "The start date", "example": "2006-01-02T15:04:05", "in": "query", "name": "startDate", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/models.PagedResponse" }, { "properties": { "content": { "items": { "$ref": "#/components/schemas/models.MetaEventResponse" }, "type": "array" } }, "type": "object" } ] } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Meta Events" ], "description": "This endpoint fetches meta events with pagination", "operationId": "GetMetaEventsPaged", "summary": "List all meta events" } }, "/v1/projects/{projectID}/meta-events/{metaEventID}": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "meta event id", "in": "path", "name": "metaEventID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.MetaEventResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Meta Events" ], "description": "This endpoint retrieves a meta event", "operationId": "GetMetaEvent", "summary": "Retrieve a meta event" } }, "/v1/projects/{projectID}/meta-events/{metaEventID}/resend": { "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "meta event id", "in": "path", "name": "metaEventID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.MetaEventResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Meta Events" ], "description": "This endpoint retries a meta event", "operationId": "ResendMetaEvent", "summary": "Retry meta event" } }, "/v1/projects/{projectID}/onboard": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Validate without creating", "in": "query", "name": "dry_run", "schema": { "type": "boolean" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.BulkOnboardDryRunResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "202": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.BulkOnboardAcceptedResponse" } }, "type": "object" } ] } } }, "description": "Accepted" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Onboard" ], "description": "This endpoint bulk-creates endpoints with subscriptions from a JSON body. A CSV file upload is also accepted over raw HTTP as multipart/form-data with a \"file\" field; generated SDK clients only expose the JSON body.", "operationId": "BulkOnboard", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.BulkOnboardRequest" } } }, "description": "Onboard Details (JSON)" }, "summary": "Bulk onboard endpoints with subscriptions" } }, "/v1/projects/{projectID}/portal-links": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "direction", "schema": { "enum": [ "next", "prev" ], "type": "string" }, "x-enum-varnames": [ "Next", "Prev" ] }, { "description": "A pagination cursor to fetch the next page of a list", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "next_page_cursor", "schema": { "type": "string" } }, { "description": "The owner ID of the endpoint", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "ownerId", "schema": { "type": "string" } }, { "description": "The number of items to return per page", "example": 20, "in": "query", "name": "perPage", "schema": { "type": "integer" } }, { "description": "A pagination cursor to fetch the previous page of a list", "example": "01H0JATTVCXZK8FRDX1M1JN3QY", "in": "query", "name": "prev_page_cursor", "schema": { "type": "string" } }, { "description": "The name of the endpoint", "example": "endpoint-1", "in": "query", "name": "q", "schema": { "type": "string" } }, { "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", "example": "ASC | DESC", "in": "query", "name": "sort", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/models.PagedResponse" }, { "properties": { "content": { "items": { "$ref": "#/components/schemas/datastore.PortalLinkResponse" }, "type": "array" } }, "type": "object" } ] } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Portal Links" ], "description": "This endpoint fetches multiple portal links", "operationId": "LoadPortalLinksPaged", "summary": "List all portal links" }, "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/datastore.PortalLinkResponse" } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Portal Links" ], "description": "This endpoint creates a portal link", "operationId": "CreatePortalLink", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/datastore.CreatePortalLinkRequest" } } }, "description": "Portal Link Details", "required": true }, "summary": "Create a portal link" } }, "/v1/projects/{projectID}/portal-links/{portalLinkID}": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "portal link id", "in": "path", "name": "portalLinkID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/datastore.PortalLinkResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Portal Links" ], "description": "This endpoint retrieves a portal link by its id.", "operationId": "GetPortalLink", "summary": "Retrieve a portal link" }, "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "portal link id", "in": "path", "name": "portalLinkID", "required": true, "schema": { "type": "string" } } ], "responses": { "202": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/datastore.PortalLinkResponse" } }, "type": "object" } ] } } }, "description": "Accepted" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Portal Links" ], "description": "This endpoint updates a portal link", "operationId": "UpdatePortalLink", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/datastore.UpdatePortalLinkRequest" } } }, "description": "Portal Link Details", "required": true }, "summary": "Update a portal link" } }, "/v1/projects/{projectID}/portal-links/{portalLinkID}/refresh_token": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "portal link id", "in": "path", "name": "portalLinkID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "type": "string" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Portal Links" ], "description": "This endpoint retrieves a portal link auth token", "operationId": "RefreshPortalLinkAuthToken", "summary": "Get a portal link auth token" } }, "/v1/projects/{projectID}/portal-links/{portalLinkID}/revoke": { "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "portal link id", "in": "path", "name": "portalLinkID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Portal Links" ], "description": "This endpoint revokes a portal link", "operationId": "RevokePortalLink", "summary": "Revoke a portal link" } }, "/v1/projects/{projectID}/sources": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "direction", "schema": { "enum": [ "next", "prev" ], "type": "string" }, "x-enum-varnames": [ "Next", "Prev" ] }, { "description": "A pagination cursor to fetch the next page of a list", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "next_page_cursor", "schema": { "type": "string" } }, { "description": "The number of items to return per page", "example": 20, "in": "query", "name": "perPage", "schema": { "type": "integer" } }, { "description": "A pagination cursor to fetch the previous page of a list", "example": "01H0JATTVCXZK8FRDX1M1JN3QY", "in": "query", "name": "prev_page_cursor", "schema": { "type": "string" } }, { "description": "The custom source provider e.g. twitter, shopify", "example": "twitter", "in": "query", "name": "provider", "schema": { "type": "string" } }, { "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", "example": "ASC | DESC", "in": "query", "name": "sort", "schema": { "type": "string" } }, { "description": "The source type e.g. http, pub_sub", "example": "http", "in": "query", "name": "type", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/models.PagedResponse" }, { "properties": { "content": { "items": { "$ref": "#/components/schemas/models.SourceResponse" }, "type": "array" } }, "type": "object" } ] } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Sources" ], "description": "This endpoint fetches multiple sources", "operationId": "LoadSourcesPaged", "summary": "List all sources" }, "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.SourceResponse" } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Sources" ], "description": "This endpoint creates a source", "operationId": "CreateSource", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.CreateSource" } } }, "description": "Source Details", "required": true }, "summary": "Create a source" } }, "/v1/projects/{projectID}/sources/test_function": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.FunctionResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Subscriptions" ], "description": "This endpoint validates that a filter will match a certain payload structure.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.FunctionRequest" } } }, "description": "Function Details", "required": true }, "summary": "Validate source function" } }, "/v1/projects/{projectID}/sources/{sourceID}": { "delete": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "source id", "in": "path", "name": "sourceID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Sources" ], "description": "This endpoint deletes a source", "operationId": "DeleteSource", "summary": "Delete a source" }, "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Source ID", "in": "path", "name": "sourceID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.SourceResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Sources" ], "description": "This endpoint retrieves a source by its id", "operationId": "GetSource", "summary": "Retrieve a source" }, "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "source id", "in": "path", "name": "sourceID", "required": true, "schema": { "type": "string" } } ], "responses": { "202": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.SourceResponse" } }, "type": "object" } ] } } }, "description": "Accepted" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Sources" ], "description": "This endpoint updates a source", "operationId": "UpdateSource", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.UpdateSource" } } }, "description": "Source Details", "required": true }, "summary": "Update a source" } }, "/v1/projects/{projectID}/subscriptions": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "direction", "schema": { "enum": [ "next", "prev" ], "type": "string" }, "x-enum-varnames": [ "Next", "Prev" ] }, { "description": "A list of endpointIDs to filter by", "in": "query", "name": "endpointId", "schema": { "items": { "type": "string" }, "type": "array" }, "style": "form" }, { "description": "Subscription name to filter by", "in": "query", "name": "name", "schema": { "type": "string" } }, { "description": "A pagination cursor to fetch the next page of a list", "example": "01H0JA5MEES38RRK3HTEJC647K", "in": "query", "name": "next_page_cursor", "schema": { "type": "string" } }, { "description": "The number of items to return per page", "example": 20, "in": "query", "name": "perPage", "schema": { "type": "integer" } }, { "description": "A pagination cursor to fetch the previous page of a list", "example": "01H0JATTVCXZK8FRDX1M1JN3QY", "in": "query", "name": "prev_page_cursor", "schema": { "type": "string" } }, { "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", "example": "ASC | DESC", "in": "query", "name": "sort", "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/models.PagedResponse" }, { "properties": { "content": { "items": { "$ref": "#/components/schemas/models.SubscriptionResponse" }, "type": "array" } }, "type": "object" } ] } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Subscriptions" ], "description": "This endpoint fetches all the subscriptions", "operationId": "GetSubscriptions", "summary": "List all subscriptions" }, "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.SubscriptionResponse" } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Subscriptions" ], "description": "This endpoint creates a subscriptions", "operationId": "CreateSubscription", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.CreateSubscription" } } }, "description": "Subscription details", "required": true }, "summary": "Create a subscription" } }, "/v1/projects/{projectID}/subscriptions/test_filter": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "type": "boolean" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Subscriptions" ], "description": "This endpoint validates that a filter will match a certain payload structure.", "operationId": "TestSubscriptionFilter", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.TestFilter" } } }, "description": "Filter Details", "required": true }, "summary": "Validate subscription filter" } }, "/v1/projects/{projectID}/subscriptions/test_function": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.FunctionResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Subscriptions" ], "description": "This endpoint test runs a transform function against a payload.", "operationId": "TestSubscriptionFunction", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.FunctionRequest" } } }, "description": "Function Details", "required": true }, "summary": "Test a subscription function" } }, "/v1/projects/{projectID}/subscriptions/{subscriptionID}": { "delete": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "subscription id", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Subscriptions" ], "description": "This endpoint deletes a subscription", "operationId": "DeleteSubscription", "summary": "Delete subscription" }, "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "subscription id", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.SubscriptionResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Subscriptions" ], "description": "This endpoint retrieves a single subscription", "operationId": "GetSubscription", "summary": "Retrieve a subscription" }, "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "subscription id", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } } ], "responses": { "202": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.SubscriptionResponse" } }, "type": "object" } ] } } }, "description": "Accepted" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Subscriptions" ], "description": "This endpoint updates a subscription", "operationId": "UpdateSubscription", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.UpdateSubscription" } } }, "description": "Subscription Details", "required": true }, "summary": "Update a subscription" } }, "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters": { "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Subscription ID", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "items": { "$ref": "#/components/schemas/models.FilterResponse" }, "type": "array" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Filters" ], "description": "This endpoint fetches all filters for a subscription", "operationId": "GetFilters", "summary": "List all filters" }, "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Subscription ID", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.FilterResponse" } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Filters" ], "description": "This endpoint creates a new filter for a subscription", "operationId": "CreateFilter", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.CreateFilterRequest" } } }, "description": "Filter to create", "required": true }, "summary": "Create a new filter" } }, "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Subscription ID", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "items": { "$ref": "#/components/schemas/models.FilterResponse" }, "type": "array" } }, "type": "object" } ] } } }, "description": "Created" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Filters" ], "description": "This endpoint creates multiple filters for a subscription", "operationId": "BulkCreateFilters", "requestBody": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/models.CreateFilterRequest" }, "type": "array" } } }, "description": "Filters to create", "required": true }, "summary": "Create multiple subscription filters" } }, "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk_update": { "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Subscription ID", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "items": { "$ref": "#/components/schemas/models.FilterResponse" }, "type": "array" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Filters" ], "description": "This endpoint updates multiple filters for a subscription", "operationId": "BulkUpdateFilters", "requestBody": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/models.BulkUpdateFilterRequest" }, "type": "array" } } }, "description": "Filters to update", "required": true }, "summary": "Update multiple subscription filters" } }, "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/test/{eventType}": { "post": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Subscription ID", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } }, { "description": "Event Type", "in": "path", "name": "eventType", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.TestFilterResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Filters" ], "description": "This endpoint tests a filter against a payload", "operationId": "TestFilter", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.TestFilterRequest" } } }, "description": "Payload to test", "required": true }, "summary": "Test a filter" } }, "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/{filterID}": { "delete": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Subscription ID", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } }, { "description": "Filter ID", "in": "path", "name": "filterID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Filters" ], "description": "This endpoint deletes a filter", "operationId": "DeleteFilter", "summary": "Delete a filter" }, "get": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Subscription ID", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } }, { "description": "Filter ID", "in": "path", "name": "filterID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.FilterResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Filters" ], "description": "This endpoint retrieves a single filter", "operationId": "GetFilter", "summary": "Get a filter" }, "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "Subscription ID", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } }, { "description": "Filter ID", "in": "path", "name": "filterID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "$ref": "#/components/schemas/models.FilterResponse" } }, "type": "object" } ] } } }, "description": "OK" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Filters" ], "description": "This endpoint updates an existing filter", "operationId": "UpdateFilter", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.UpdateFilterRequest" } } }, "description": "Updated filter", "required": true }, "summary": "Update a filter" } }, "/v1/projects/{projectID}/subscriptions/{subscriptionID}/toggle_status": { "put": { "parameters": [ { "description": "Project ID", "in": "path", "name": "projectID", "required": true, "schema": { "type": "string" } }, { "description": "subscription id", "in": "path", "name": "subscriptionID", "required": true, "schema": { "type": "string" } } ], "responses": { "202": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Accepted" }, "400": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Bad Request" }, "401": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Unauthorized" }, "404": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/util.ServerResponse" }, { "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/handlers.Stub" } ], "nullable": true } }, "type": "object" } ] } } }, "description": "Not Found" } }, "security": [ { "ApiKeyAuth": [] } ], "tags": [ "Subscriptions" ], "description": "This endpoint toggles a subscription status. Retained for backward compatibility.", "operationId": "ToggleSubscriptionStatus", "summary": "Toggle subscription status" } } }, "components": { "requestBodies": { "models.FunctionRequest": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/models.FunctionRequest" } } }, "description": "Function Details", "required": true } }, "schemas": { "auth.RoleType": { "enum": [ "instance_admin", "organisation_admin", "billing_admin", "project_admin", "project_viewer", "api", "" ], "type": "string", "x-enum-comments": { "RoleBillingAdmin": "Organisation level - can manage billing only TODO:", "RoleInstanceAdmin": "Instance level - can manage all orgs and projects", "RoleOrganisationAdmin": "Organisation level - can manage org and all projects", "RoleProjectAdmin": "Project level - can manage project settings and users", "RoleProjectViewer": "Project level - can view project data only" }, "x-enum-descriptions": [ "Instance level - can manage all orgs and projects", "Organisation level - can manage org and all projects", "Organisation level - can manage billing only TODO:", "Project level - can manage project settings and users", "Project level - can view project data only", "" ], "x-enum-varnames": [ "RoleInstanceAdmin", "RoleOrganisationAdmin", "RoleBillingAdmin", "RoleProjectAdmin", "RoleProjectViewer", "RoleAPI" ] }, "config.RequestIDHeaderProvider": { "enum": [ "X-Convoy-Idempotency-Key", "" ], "type": "string", "x-enum-varnames": [ "DefaultRequestIDHeader" ] }, "config.SignatureHeaderProvider": { "enum": [ "X-Convoy-Signature", "" ], "type": "string", "x-enum-varnames": [ "DefaultSignatureHeader" ] }, "datastore.APIKeyResponse": { "properties": { "created_at": { "type": "string" }, "expires_at": { "nullable": true, "type": "string" }, "key": { "type": "string" }, "key_type": { "type": "string" }, "name": { "type": "string" }, "role": { "$ref": "#/components/schemas/datastore.Role" }, "uid": { "type": "string" }, "user_id": { "type": "string" } }, "type": "object" }, "datastore.AlertConfiguration": { "properties": { "count": { "type": "integer" }, "threshold": { "type": "string" } }, "type": "object" }, "datastore.AmqpCredentials": { "properties": { "password": { "type": "string" }, "user": { "type": "string" } }, "type": "object" }, "datastore.AmqpPubSubConfig": { "properties": { "host": { "type": "string" }, "auth": { "allOf": [ { "$ref": "#/components/schemas/datastore.AmqpCredentials" } ], "nullable": true }, "bindedExchange": { "nullable": true, "type": "string" }, "deadLetterExchange": { "nullable": true, "type": "string" }, "port": { "type": "string" }, "queue": { "type": "string" }, "routingKey": { "type": "string" }, "schema": { "type": "string" }, "vhost": { "nullable": true, "type": "string" } }, "type": "object" }, "datastore.ApiKey": { "properties": { "header_name": { "type": "string" }, "header_value": { "type": "string" } }, "type": "object" }, "datastore.BasicAuth": { "properties": { "password": { "type": "string" }, "username": { "type": "string" } }, "type": "object" }, "datastore.CLIMetadata": { "properties": { "event_type": { "type": "string" }, "source_id": { "type": "string" } }, "type": "object" }, "datastore.CircuitBreakerConfiguration": { "properties": { "consecutive_failure_threshold": { "type": "integer" }, "error_timeout": { "type": "integer" }, "failure_threshold": { "type": "integer" }, "minimum_request_count": { "type": "integer" }, "observability_window": { "type": "integer" }, "sample_rate": { "type": "integer" }, "success_threshold": { "type": "integer" } }, "type": "object" }, "datastore.CreatePortalLinkRequest": { "properties": { "auth_type": { "type": "string" }, "can_manage_endpoint": { "description": "Specify whether endpoint management can be done through the Portal Link UI", "type": "boolean" }, "endpoints": { "description": "Deprecated\nIDs of endpoints in this portal link", "items": { "type": "string" }, "type": "array" }, "name": { "description": "Portal Link Name", "type": "string" }, "owner_id": { "description": "OwnerID, the portal link will inherit all the endpoints with this owner ID", "type": "string" } }, "type": "object" }, "datastore.CustomResponse": { "properties": { "body": { "type": "string" }, "content_type": { "type": "string" } }, "type": "object" }, "datastore.DeliveryAttempt": { "properties": { "api_version": { "type": "string" }, "created_at": { "type": "string" }, "deleted_at": { "nullable": true, "type": "string" }, "endpoint_id": { "type": "string" }, "error": { "type": "string" }, "http_status": { "type": "string" }, "ip_address": { "type": "string" }, "method": { "type": "string" }, "msg_id": { "type": "string" }, "project_id": { "type": "string" }, "request_http_header": { "$ref": "#/components/schemas/datastore.HttpHeader" }, "requested_at": { "nullable": true, "type": "string" }, "responded_at": { "nullable": true, "type": "string" }, "response_data": { "type": "string" }, "response_http_header": { "$ref": "#/components/schemas/datastore.HttpHeader" }, "status": { "type": "boolean" }, "uid": { "type": "string" }, "updated_at": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "datastore.DeliveryMode": { "enum": [ "at_least_once", "at_most_once", "" ], "type": "string", "x-enum-varnames": [ "AtLeastOnceDeliveryMode", "AtMostOnceDeliveryMode" ] }, "datastore.Device": { "properties": { "created_at": { "type": "string" }, "deleted_at": { "nullable": true, "type": "string" }, "endpoint_id": { "type": "string" }, "host_name": { "type": "string" }, "last_seen_at": { "type": "string" }, "project_id": { "type": "string" }, "status": { "$ref": "#/components/schemas/datastore.DeviceStatus" }, "uid": { "type": "string" }, "updated_at": { "type": "string" } }, "type": "object" }, "datastore.DeviceStatus": { "enum": [ "offline", "online", "disabled", "" ], "type": "string", "x-enum-varnames": [ "DeviceStatusOffline", "DeviceStatusOnline", "DeviceStatusDisabled" ] }, "datastore.EncodingType": { "enum": [ "base64", "hex", "" ], "type": "string", "x-enum-varnames": [ "Base64Encoding", "HexEncoding" ] }, "datastore.Endpoint": { "properties": { "advanced_signatures": { "type": "boolean" }, "authentication": { "allOf": [ { "$ref": "#/components/schemas/datastore.EndpointAuthentication" } ], "nullable": true }, "cb_state": { "description": "CBState is the circuit breaker state (\"open\", \"half-open\", \"closed\") so the UI\ncan reflect a tripped breaker on the endpoint status. Nil when CB is\noff/unlicensed or has no sample for this endpoint.", "nullable": true, "type": "string" }, "content_type": { "type": "string" }, "created_at": { "type": "string" }, "deleted_at": { "nullable": true, "type": "string" }, "description": { "type": "string" }, "events": { "type": "integer" }, "failure_count": { "nullable": true, "type": "integer" }, "failure_rate": { "description": "FailureRate is the circuit breaker's rolling failure rate for this endpoint.\nIt is a pointer so the API can return null when no rate was computed (circuit\nbreaker feature off, or sampler not running), distinct from a genuine 0%.", "nullable": true, "type": "number" }, "http_timeout": { "type": "integer" }, "mtls_client_cert": { "allOf": [ { "$ref": "#/components/schemas/datastore.MtlsClientCert" } ], "description": "mTLS client certificate configuration", "nullable": true }, "name": { "type": "string" }, "owner_id": { "type": "string" }, "period_failure_rate": { "description": "PeriodFailureRate is the period failure rate from event_deliveries,\n(Failure+Retry)/(Success+Failure+Retry). Retry counts as failed-so-far.\nNil when the range has no counted deliveries; sibling counts are transient.", "nullable": true, "type": "number" }, "project_id": { "type": "string" }, "rate_limit": { "type": "integer" }, "rate_limit_duration": { "type": "integer" }, "retry_count": { "nullable": true, "type": "integer" }, "secrets": { "items": { "$ref": "#/components/schemas/datastore.Secret" }, "type": "array" }, "slack_webhook_url": { "type": "string" }, "status": { "$ref": "#/components/schemas/datastore.EndpointStatus" }, "success_count": { "nullable": true, "type": "integer" }, "support_email": { "type": "string" }, "uid": { "type": "string" }, "updated_at": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "datastore.EndpointAuthentication": { "properties": { "api_key": { "allOf": [ { "$ref": "#/components/schemas/datastore.ApiKey" } ], "nullable": true }, "basic_auth": { "allOf": [ { "$ref": "#/components/schemas/datastore.BasicAuth" } ], "nullable": true }, "oauth2": { "allOf": [ { "$ref": "#/components/schemas/datastore.OAuth2" } ], "nullable": true }, "type": { "$ref": "#/components/schemas/datastore.EndpointAuthenticationType" } }, "type": "object" }, "datastore.EndpointAuthenticationType": { "enum": [ "api_key", "oauth2", "basic_auth", "" ], "type": "string", "x-enum-varnames": [ "APIKeyAuthentication", "OAuth2Authentication", "BasicAuthentication" ] }, "datastore.EndpointStatus": { "enum": [ "active", "inactive", "paused", "" ], "type": "string", "x-enum-varnames": [ "ActiveEndpointStatus", "InactiveEndpointStatus", "PausedEndpointStatus" ] }, "datastore.Event": { "properties": { "acknowledged_at": { "nullable": true, "type": "string" }, "app_id": { "description": "Deprecated", "type": "string" }, "created_at": { "type": "string" }, "data": { "additionalProperties": true, "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", "nullable": true, "type": "object" }, "deleted_at": { "nullable": true, "type": "string" }, "endpoint_metadata": { "items": { "$ref": "#/components/schemas/datastore.Endpoint" }, "type": "array" }, "endpoints": { "items": { "type": "string" }, "type": "array" }, "event_type": { "type": "string" }, "headers": { "$ref": "#/components/schemas/httpheader.HTTPHeader" }, "idempotency_key": { "type": "string" }, "is_duplicate_event": { "type": "boolean" }, "metadata": { "type": "string" }, "project_id": { "type": "string" }, "raw": { "type": "string" }, "source_id": { "type": "string" }, "source_metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.Source" } ], "nullable": true }, "status": { "$ref": "#/components/schemas/datastore.EventStatus" }, "uid": { "type": "string" }, "updated_at": { "type": "string" }, "url_path": { "type": "string" }, "url_query_params": { "type": "string" } }, "type": "object" }, "datastore.EventDeliveryStatus": { "enum": [ "Scheduled", "Processing", "Discarded", "Failure", "Success", "Retry", "" ], "type": "string", "x-enum-varnames": [ "ScheduledEventStatus", "ProcessingEventStatus", "DiscardedEventStatus", "FailureEventStatus", "SuccessEventStatus", "RetryEventStatus" ] }, "datastore.EventStatus": { "enum": [ "Processing", "Failure", "Success", "Retry", "Pending", "" ], "type": "string", "x-enum-varnames": [ "ProcessingStatus", "FailureStatus", "SuccessStatus", "RetryStatus", "PendingStatus" ] }, "datastore.FilterConfiguration": { "properties": { "event_types": { "items": { "type": "string" }, "type": "array" }, "filter": { "$ref": "#/components/schemas/datastore.FilterSchema" } }, "type": "object" }, "datastore.FilterSchema": { "properties": { "body": { "$ref": "#/components/schemas/datastore.M" }, "headers": { "$ref": "#/components/schemas/datastore.M" }, "is_flattened": { "type": "boolean" }, "path": { "$ref": "#/components/schemas/datastore.M" }, "query": { "$ref": "#/components/schemas/datastore.M" } }, "type": "object" }, "datastore.GooglePubSubConfig": { "properties": { "project_id": { "type": "string" }, "service_account": { "description": "encoding/json marshals []byte as a base64 string on the wire.", "format": "byte", "type": "string" }, "subscription_id": { "type": "string" } }, "type": "object" }, "datastore.HMac": { "properties": { "encoding": { "$ref": "#/components/schemas/datastore.EncodingType" }, "hash": { "type": "string" }, "header": { "type": "string" }, "secret": { "type": "string" } }, "type": "object" }, "datastore.HttpHeader": { "additionalProperties": { "type": "string" }, "nullable": true, "type": "object" }, "datastore.KafkaAuth": { "properties": { "hash": { "type": "string" }, "password": { "type": "string" }, "tls": { "type": "boolean" }, "type": { "type": "string" }, "username": { "type": "string" } }, "type": "object" }, "datastore.KafkaPubSubConfig": { "properties": { "auth": { "allOf": [ { "$ref": "#/components/schemas/datastore.KafkaAuth" } ], "nullable": true }, "brokers": { "items": { "type": "string" }, "type": "array" }, "consumer_group_id": { "type": "string" }, "topic_name": { "type": "string" } }, "type": "object" }, "datastore.M": { "additionalProperties": true, "nullable": true, "type": "object" }, "datastore.MetaEventAttempt": { "properties": { "request_http_header": { "$ref": "#/components/schemas/datastore.HttpHeader" }, "response_data": { "type": "string" }, "response_http_header": { "$ref": "#/components/schemas/datastore.HttpHeader" } }, "type": "object" }, "datastore.MetaEventConfiguration": { "properties": { "event_type": { "items": { "type": "string" }, "type": "array" }, "is_enabled": { "type": "boolean" }, "pub_sub": { "allOf": [ { "$ref": "#/components/schemas/datastore.PubSubConfig" } ], "nullable": true }, "secret": { "type": "string" }, "type": { "$ref": "#/components/schemas/datastore.MetaEventType" }, "url": { "type": "string" } }, "type": "object" }, "datastore.MetaEventType": { "enum": [ "http", "pub_sub", "" ], "type": "string", "x-enum-varnames": [ "HTTPMetaEvent", "PubSubMetaEvent" ] }, "datastore.Metadata": { "properties": { "data": { "additionalProperties": true, "description": "Data to be sent to endpoint.", "nullable": true, "type": "object" }, "interval_seconds": { "type": "integer" }, "max_retry_seconds": { "type": "integer" }, "next_send_time": { "type": "string" }, "num_trials": { "description": "NumTrials: number of times we have tried to deliver this Event to\nan application", "type": "integer" }, "raw": { "type": "string" }, "retry_limit": { "type": "integer" }, "strategy": { "$ref": "#/components/schemas/datastore.StrategyProvider" } }, "type": "object" }, "datastore.MtlsClientCert": { "properties": { "client_cert": { "description": "ClientCert is the client certificate PEM string", "type": "string" }, "client_key": { "description": "ClientKey is the client private key PEM string", "type": "string" } }, "type": "object" }, "datastore.OAuth2": { "properties": { "audience": { "type": "string" }, "authentication_type": { "$ref": "#/components/schemas/datastore.OAuth2AuthenticationType" }, "client_id": { "type": "string" }, "client_secret": { "description": "Encrypted at rest", "type": "string" }, "expiry_time_unit": { "allOf": [ { "$ref": "#/components/schemas/datastore.OAuth2ExpiryTimeUnit" } ], "description": "Expiry time unit (seconds, milliseconds, minutes, hours)" }, "field_mapping": { "allOf": [ { "$ref": "#/components/schemas/datastore.OAuth2FieldMapping" } ], "description": "Field mapping for flexible token response parsing", "nullable": true }, "grant_type": { "type": "string" }, "issuer": { "type": "string" }, "scope": { "type": "string" }, "signing_algorithm": { "type": "string" }, "signing_key": { "allOf": [ { "$ref": "#/components/schemas/datastore.OAuth2SigningKey" } ], "description": "Encrypted at rest", "nullable": true }, "subject": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "datastore.OAuth2AuthenticationType": { "enum": [ "shared_secret", "client_assertion", "" ], "type": "string", "x-enum-varnames": [ "SharedSecretAuth", "ClientAssertionAuth" ] }, "datastore.OAuth2ExpiryTimeUnit": { "enum": [ "seconds", "milliseconds", "minutes", "hours", "" ], "type": "string", "x-enum-varnames": [ "ExpiryTimeUnitSeconds", "ExpiryTimeUnitMilliseconds", "ExpiryTimeUnitMinutes", "ExpiryTimeUnitHours" ] }, "datastore.OAuth2FieldMapping": { "properties": { "access_token": { "description": "Field name for access token (e.g., \"accessToken\", \"access_token\", \"token\")", "type": "string" }, "expires_in": { "description": "Field name for expiry time (e.g., \"expiresIn\", \"expires_in\", \"expiresAt\")", "type": "string" }, "token_type": { "description": "Field name for token type (e.g., \"tokenType\", \"token_type\")", "type": "string" } }, "type": "object" }, "datastore.OAuth2SigningKey": { "properties": { "crv": { "description": "EC (Elliptic Curve) key fields", "type": "string" }, "d": { "description": "Private key (EC only)", "type": "string" }, "dp": { "description": "RSA first factor CRT exponent (RSA private key only)", "type": "string" }, "dq": { "description": "RSA second factor CRT exponent (RSA private key only)", "type": "string" }, "e": { "description": "RSA public exponent (RSA only)", "type": "string" }, "kid": { "description": "Key ID", "type": "string" }, "kty": { "description": "Key type: \"EC\" or \"RSA\"", "type": "string" }, "n": { "description": "RSA key fields", "type": "string" }, "p": { "description": "RSA first prime factor (RSA private key only)", "type": "string" }, "q": { "description": "RSA second prime factor (RSA private key only)", "type": "string" }, "qi": { "description": "RSA first CRT coefficient (RSA private key only)", "type": "string" }, "x": { "description": "X coordinate (EC only)", "type": "string" }, "y": { "description": "Y coordinate (EC only)", "type": "string" } }, "type": "object" }, "datastore.PageDirection": { "enum": [ "next", "prev", "" ], "type": "string", "x-enum-varnames": [ "Next", "Prev" ] }, "datastore.PaginationData": { "properties": { "has_next_page": { "type": "boolean" }, "has_prev_page": { "type": "boolean" }, "next_page_cursor": { "type": "string" }, "per_page": { "type": "integer" }, "prev_page_cursor": { "type": "string" }, "total": { "type": "integer" } }, "type": "object" }, "datastore.PortalAuthType": { "enum": [ "refresh_token", "static_token", "" ], "type": "string", "x-enum-varnames": [ "PortalAuthTypeRefreshToken", "PortalAuthTypeStaticToken" ] }, "datastore.PortalLinkResponse": { "properties": { "auth_key": { "type": "string" }, "auth_type": { "$ref": "#/components/schemas/datastore.PortalAuthType" }, "can_manage_endpoint": { "type": "boolean" }, "created_at": { "type": "string" }, "deleted_at": { "nullable": true, "type": "string" }, "endpoint_count": { "type": "integer" }, "endpoints": { "items": { "type": "string" }, "type": "array" }, "endpoints_metadata": { "items": { "allOf": [ { "$ref": "#/components/schemas/datastore.Endpoint" } ], "nullable": true }, "type": "array" }, "name": { "type": "string" }, "owner_id": { "type": "string" }, "project_id": { "type": "string" }, "token": { "type": "string" }, "uid": { "type": "string" }, "updated_at": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "datastore.ProjectConfig": { "properties": { "add_event_id_trace_headers": { "type": "boolean" }, "circuit_breaker": { "allOf": [ { "$ref": "#/components/schemas/datastore.CircuitBreakerConfiguration" } ], "nullable": true }, "disable_endpoint": { "type": "boolean" }, "max_payload_read_size": { "type": "integer" }, "meta_event": { "allOf": [ { "$ref": "#/components/schemas/datastore.MetaEventConfiguration" } ], "nullable": true }, "multiple_endpoint_subscriptions": { "type": "boolean" }, "ratelimit": { "allOf": [ { "$ref": "#/components/schemas/datastore.RateLimitConfiguration" } ], "nullable": true }, "replay_attacks_prevention_enabled": { "type": "boolean" }, "request_id_header": { "$ref": "#/components/schemas/config.RequestIDHeaderProvider" }, "search_policy": { "type": "string" }, "signature": { "allOf": [ { "$ref": "#/components/schemas/datastore.SignatureConfiguration" } ], "nullable": true }, "ssl": { "allOf": [ { "$ref": "#/components/schemas/datastore.SSLConfiguration" } ], "nullable": true }, "strategy": { "allOf": [ { "$ref": "#/components/schemas/datastore.StrategyConfiguration" } ], "nullable": true }, "sync_dynamic_event_ack": { "description": "SyncDynamicEventAck waits for endpoint/subscription resolve before\nreturning 2xx from POST /events/dynamic. Default false keeps 201-on-queue.", "type": "boolean" } }, "type": "object" }, "datastore.ProjectStatistics": { "properties": { "endpoints_exist": { "type": "boolean" }, "events_exist": { "type": "boolean" }, "sources_exist": { "type": "boolean" }, "subscriptions_exist": { "type": "boolean" } }, "type": "object" }, "datastore.ProjectType": { "enum": [ "outgoing", "incoming", "" ], "type": "string", "x-enum-varnames": [ "OutgoingProject", "IncomingProject" ] }, "datastore.ProviderConfig": { "properties": { "twitter": { "allOf": [ { "$ref": "#/components/schemas/datastore.TwitterProviderConfig" } ], "nullable": true } }, "type": "object" }, "datastore.PubSubConfig": { "properties": { "amqp": { "allOf": [ { "$ref": "#/components/schemas/datastore.AmqpPubSubConfig" } ], "nullable": true }, "google": { "allOf": [ { "$ref": "#/components/schemas/datastore.GooglePubSubConfig" } ], "nullable": true }, "kafka": { "allOf": [ { "$ref": "#/components/schemas/datastore.KafkaPubSubConfig" } ], "nullable": true }, "sqs": { "allOf": [ { "$ref": "#/components/schemas/datastore.SQSPubSubConfig" } ], "nullable": true }, "type": { "$ref": "#/components/schemas/datastore.PubSubType" }, "workers": { "type": "integer" } }, "type": "object" }, "datastore.PubSubType": { "enum": [ "sqs", "google", "kafka", "amqp", "" ], "type": "string", "x-enum-varnames": [ "SqsPubSub", "GooglePubSub", "KafkaPubSub", "AmqpPubSub" ] }, "datastore.RateLimitConfiguration": { "properties": { "count": { "type": "integer" }, "duration": { "type": "integer" } }, "type": "object" }, "datastore.RetryConfiguration": { "properties": { "duration": { "type": "integer" }, "retry_count": { "type": "integer" }, "type": { "$ref": "#/components/schemas/datastore.StrategyProvider" } }, "type": "object" }, "datastore.Role": { "properties": { "app": { "type": "string" }, "project": { "type": "string" }, "type": { "$ref": "#/components/schemas/auth.RoleType" } }, "type": "object" }, "datastore.SQSPubSubConfig": { "properties": { "access_key_id": { "type": "string" }, "default_region": { "type": "string" }, "endpoint": { "description": "Optional: for LocalStack testing", "type": "string" }, "queue_name": { "type": "string" }, "secret_key": { "type": "string" } }, "type": "object" }, "datastore.SSLConfiguration": { "properties": { "enforce_secure_endpoints": { "type": "boolean" } }, "type": "object" }, "datastore.Secret": { "properties": { "created_at": { "type": "string" }, "deleted_at": { "nullable": true, "type": "string" }, "expires_at": { "nullable": true, "type": "string" }, "uid": { "type": "string" }, "updated_at": { "type": "string" }, "value": { "type": "string" } }, "type": "object" }, "datastore.SignatureConfiguration": { "properties": { "header": { "$ref": "#/components/schemas/config.SignatureHeaderProvider" }, "versions": { "items": { "$ref": "#/components/schemas/datastore.SignatureVersion" }, "type": "array" } }, "type": "object" }, "datastore.SignatureVersion": { "properties": { "created_at": { "type": "string" }, "encoding": { "$ref": "#/components/schemas/datastore.EncodingType" }, "hash": { "type": "string" }, "uid": { "type": "string" } }, "type": "object" }, "datastore.Source": { "properties": { "body_function": { "nullable": true, "type": "string" }, "created_at": { "type": "string" }, "custom_response": { "$ref": "#/components/schemas/datastore.CustomResponse" }, "deleted_at": { "nullable": true, "type": "string" }, "event_type_location": { "type": "string" }, "forward_headers": { "items": { "type": "string" }, "type": "array" }, "header_function": { "nullable": true, "type": "string" }, "idempotency_keys": { "items": { "type": "string" }, "type": "array" }, "is_disabled": { "type": "boolean" }, "mask_id": { "type": "string" }, "name": { "type": "string" }, "project_id": { "type": "string" }, "provider": { "$ref": "#/components/schemas/datastore.SourceProvider" }, "provider_config": { "allOf": [ { "$ref": "#/components/schemas/datastore.ProviderConfig" } ], "nullable": true }, "pub_sub": { "allOf": [ { "$ref": "#/components/schemas/datastore.PubSubConfig" } ], "nullable": true }, "type": { "$ref": "#/components/schemas/datastore.SourceType" }, "uid": { "type": "string" }, "updated_at": { "type": "string" }, "url": { "type": "string" }, "verifier": { "allOf": [ { "$ref": "#/components/schemas/datastore.VerifierConfig" } ], "nullable": true } }, "type": "object" }, "datastore.SourceProvider": { "enum": [ "github", "twitter", "shopify", "" ], "type": "string", "x-enum-varnames": [ "GithubSourceProvider", "TwitterSourceProvider", "ShopifySourceProvider" ] }, "datastore.SourceType": { "enum": [ "http", "rest_api", "pub_sub", "db_change_stream", "" ], "type": "string", "x-enum-varnames": [ "HTTPSource", "RestApiSource", "PubSubSource", "DBChangeStream" ] }, "datastore.StrategyConfiguration": { "properties": { "duration": { "type": "integer" }, "retry_count": { "type": "integer" }, "type": { "$ref": "#/components/schemas/datastore.StrategyProvider" } }, "type": "object" }, "datastore.StrategyProvider": { "enum": [ "linear", "exponential", "" ], "type": "string", "x-enum-varnames": [ "LinearStrategyProvider", "ExponentialStrategyProvider" ] }, "datastore.SubscriptionType": { "enum": [ "cli", "api", "" ], "type": "string", "x-enum-varnames": [ "SubscriptionTypeCLI", "SubscriptionTypeAPI" ] }, "datastore.TwitterProviderConfig": { "properties": { "crc_verified_at": { "nullable": true, "type": "string" } }, "type": "object" }, "datastore.UpdatePortalLinkRequest": { "properties": { "auth_type": { "type": "string" }, "can_manage_endpoint": { "description": "Specify whether endpoint management can be done through the Portal Link UI", "type": "boolean" }, "endpoints": { "description": "Deprecated\nIDs of endpoints in this portal link", "items": { "type": "string" }, "type": "array" }, "name": { "description": "Portal Link Name", "type": "string" }, "owner_id": { "description": "OwnerID, the portal link will inherit all the endpoints with this owner ID", "type": "string" } }, "type": "object" }, "datastore.VerifierConfig": { "properties": { "api_key": { "allOf": [ { "$ref": "#/components/schemas/datastore.ApiKey" } ], "nullable": true }, "basic_auth": { "allOf": [ { "$ref": "#/components/schemas/datastore.BasicAuth" } ], "nullable": true }, "hmac": { "allOf": [ { "$ref": "#/components/schemas/datastore.HMac" } ], "nullable": true }, "type": { "$ref": "#/components/schemas/datastore.VerifierType" } }, "type": "object" }, "datastore.VerifierType": { "enum": [ "noop", "hmac", "basic_auth", "api_key", "" ], "type": "string", "x-enum-varnames": [ "NoopVerifier", "HMacVerifier", "BasicAuthVerifier", "APIKeyVerifier" ] }, "handlers.Stub": { "additionalProperties": true, "nullable": true, "type": "object" }, "httpheader.HTTPHeader": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "nullable": true, "type": "object" }, "models.AlertConfiguration": { "properties": { "count": { "description": "Count", "type": "integer" }, "threshold": { "description": "Threshold", "type": "string" } }, "type": "object" }, "models.AmqpAuth": { "properties": { "password": { "type": "string" }, "user": { "type": "string" } }, "type": "object" }, "models.AmqpExchange": { "properties": { "exchange": { "type": "string" }, "routingKey": { "type": "string" } }, "type": "object" }, "models.AmqpPubSubconfig": { "properties": { "host": { "type": "string" }, "auth": { "$ref": "#/components/schemas/models.AmqpAuth" }, "bindExchange": { "$ref": "#/components/schemas/models.AmqpExchange" }, "deadLetterExchange": { "type": "string" }, "port": { "type": "string" }, "queue": { "type": "string" }, "schema": { "type": "string" }, "vhost": { "type": "string" } }, "type": "object" }, "models.ApiKey": { "properties": { "header_name": { "type": "string" }, "header_value": { "type": "string" } }, "required": [ "header_name", "header_value" ], "type": "object" }, "models.BasicAuth": { "properties": { "password": { "type": "string" }, "username": { "type": "string" } }, "required": [ "password", "username" ], "type": "object" }, "models.BroadcastEvent": { "properties": { "acknowledged_at": { "type": "string" }, "custom_headers": { "additionalProperties": { "type": "string" }, "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", "nullable": true, "type": "object" }, "data": { "additionalProperties": true, "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", "nullable": true, "type": "object" }, "event_type": { "description": "Event Type is used for filtering and debugging e.g invoice.paid", "type": "string" }, "idempotency_key": { "description": "Specify a key for event deduplication", "type": "string" } }, "type": "object" }, "models.BulkOnboardAcceptedResponse": { "properties": { "batch_count": { "type": "integer" }, "message": { "type": "string" }, "total_items": { "type": "integer" } }, "type": "object" }, "models.BulkOnboardDryRunResponse": { "properties": { "errors": { "items": { "$ref": "#/components/schemas/models.OnboardValidationError" }, "type": "array" }, "total_rows": { "type": "integer" }, "valid_count": { "type": "integer" } }, "type": "object" }, "models.BulkOnboardRequest": { "properties": { "items": { "items": { "$ref": "#/components/schemas/models.OnboardItem" }, "type": "array" } }, "type": "object" }, "models.BulkUpdateFilterRequest": { "properties": { "body": { "additionalProperties": true, "nullable": true, "type": "object" }, "enabled_at": { "$ref": "#/components/schemas/models.OptionalTime" }, "event_type": { "type": "string" }, "headers": { "additionalProperties": true, "nullable": true, "type": "object" }, "path": { "additionalProperties": true, "nullable": true, "type": "object" }, "query": { "additionalProperties": true, "nullable": true, "type": "object" }, "uid": { "type": "string" } }, "required": [ "uid" ], "type": "object" }, "models.CountResponse": { "properties": { "num": { "type": "integer" } }, "type": "object" }, "models.CreateEndpoint": { "properties": { "advanced_signatures": { "description": "Convoy supports two [signature formats](https://getconvoy.io/docs/product-manual/signatures)\n-- simple or advanced. If left unspecified, we default to false.", "type": "boolean" }, "appID": { "description": "Deprecated but necessary for backward compatibility", "type": "string" }, "authentication": { "allOf": [ { "$ref": "#/components/schemas/models.EndpointAuthentication" } ], "description": "This is used to define any custom authentication required by the endpoint. This\nshouldn't be needed often because webhook endpoints usually should be exposed to\nthe internet." }, "content_type": { "description": "Content type for the endpoint. Defaults to application/json if not specified.", "type": "string" }, "description": { "description": "Human-readable description of the endpoint. Think of this as metadata describing\nthe endpoint", "type": "string" }, "http_timeout": { "description": "Define endpoint http timeout in seconds.", "type": "integer" }, "is_disabled": { "description": "This is used to manually enable/disable the endpoint.", "type": "boolean" }, "mtls_client_cert": { "allOf": [ { "$ref": "#/components/schemas/models.MtlsClientCert" } ], "description": "mTLS client certificate configuration for the endpoint" }, "name": { "description": "Endpoint name.", "type": "string" }, "owner_id": { "description": "The OwnerID is used to group more than one endpoint together to achieve\n[fanout](https://getconvoy.io/docs/manual/endpoints#Endpoint%20Owner%20ID)", "type": "string" }, "rate_limit": { "description": "Rate limit is the total number of requests to be sent to an endpoint in\nthe time duration specified in RateLimitDuration", "type": "integer" }, "rate_limit_duration": { "description": "Rate limit duration specifies the time range for the rate limit.", "type": "integer" }, "secret": { "description": "Endpoint's webhook secret. If not provided, Convoy autogenerates one for the endpoint.", "type": "string" }, "slack_webhook_url": { "description": "Slack webhook URL is an alternative method to support email where endpoint developers\ncan receive failure notifications on a slack channel.", "type": "string" }, "support_email": { "description": "Endpoint developers support email. This is used for communicating endpoint state\nchanges. You should always turn this on when disabling endpoints are enabled.", "type": "string" }, "url": { "description": "URL is the endpoint's URL prefixed with https. non-https urls are currently\nnot supported.", "type": "string" } }, "type": "object" }, "models.CreateEvent": { "properties": { "app_id": { "description": "Deprecated but necessary for backward compatibility.", "type": "string" }, "custom_headers": { "additionalProperties": { "type": "string" }, "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", "nullable": true, "type": "object" }, "data": { "additionalProperties": true, "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", "nullable": true, "type": "object" }, "endpoint_id": { "description": "Specifies the endpoint to send this event to. Required unless the\ndeprecated app_id is provided.", "type": "string" }, "event_type": { "description": "Event Type is used for filtering and debugging e.g invoice.paid", "type": "string" }, "idempotency_key": { "description": "Specify a key for event deduplication", "type": "string" } }, "type": "object" }, "models.CreateEventType": { "properties": { "category": { "description": "Category is a product-specific grouping for the event type", "type": "string" }, "description": { "description": "Description is used to describe what the event type does", "type": "string" }, "json_schema": { "additionalProperties": true, "description": "JSONSchema is the JSON structure of the event type", "nullable": true, "type": "object" }, "name": { "description": "Name is the event type name. E.g., invoice.created", "type": "string" } }, "type": "object" }, "models.CreateFilterRequest": { "properties": { "body": { "allOf": [ { "$ref": "#/components/schemas/datastore.M" } ], "description": "Body matching criteria (optional)" }, "enabled_at": { "allOf": [ { "$ref": "#/components/schemas/models.OptionalTime" } ], "description": "Non-null when this filter is active. Defaults to now when omitted." }, "event_type": { "description": "Type of event this filter applies to (required)", "type": "string" }, "headers": { "allOf": [ { "$ref": "#/components/schemas/datastore.M" } ], "description": "Header matching criteria (optional)" }, "path": { "allOf": [ { "$ref": "#/components/schemas/datastore.M" } ], "description": "Path matching criteria (optional)" }, "query": { "allOf": [ { "$ref": "#/components/schemas/datastore.M" } ], "description": "Query matching criteria (optional)" } }, "required": [ "event_type" ], "type": "object" }, "models.CreateProject": { "properties": { "config": { "allOf": [ { "$ref": "#/components/schemas/models.ProjectConfig" } ], "description": "Project Config" }, "logo_url": { "type": "string" }, "name": { "description": "Project Name", "type": "string" }, "type": { "description": "Project Type, supported values are `outgoing`, `incoming`", "type": "string" } }, "type": "object" }, "models.CreateProjectResponse": { "properties": { "api_key": { "allOf": [ { "$ref": "#/components/schemas/datastore.APIKeyResponse" } ], "nullable": true }, "project": { "allOf": [ { "$ref": "#/components/schemas/models.ProjectResponse" } ], "nullable": true } }, "type": "object" }, "models.CreateSource": { "properties": { "body_function": { "description": "Function is a javascript function used to mutate the payload\nimmediately after ingesting an event", "type": "string" }, "custom_response": { "allOf": [ { "$ref": "#/components/schemas/models.CustomResponse" } ], "description": "Custom response is used to define a custom response for incoming\nwebhooks project sources only." }, "event_type_location": { "description": "EventTypeLocation is used to specify where Convoy should read the event type\nfrom an incoming webhook request.", "type": "string" }, "header_function": { "description": "Function is a javascript function used to mutate the headers\nimmediately after ingesting an event", "type": "string" }, "idempotency_keys": { "description": "IdempotencyKeys are used to specify parts of a webhook request to uniquely\nidentify the event in an incoming webhooks project.", "items": { "type": "string" }, "type": "array" }, "name": { "description": "Source name.", "type": "string" }, "provider": { "allOf": [ { "$ref": "#/components/schemas/datastore.SourceProvider" } ], "description": "Use this to specify one of our predefined source types." }, "pub_sub": { "allOf": [ { "$ref": "#/components/schemas/models.PubSubConfig" } ], "description": "PubSub are used to specify message broker sources for outgoing\nwebhooks projects." }, "type": { "allOf": [ { "$ref": "#/components/schemas/datastore.SourceType" } ], "description": "Source Type." }, "verifier": { "allOf": [ { "$ref": "#/components/schemas/models.VerifierConfig" } ], "description": "Verifiers are used to verify webhook events ingested in incoming\nwebhooks projects. If set, type is required and match the verifier\ntype object you choose." } }, "type": "object" }, "models.CreateSubscription": { "properties": { "alert_config": { "allOf": [ { "$ref": "#/components/schemas/models.AlertConfiguration" } ], "description": "Alert configuration" }, "app_id": { "description": "Deprecated but necessary for backward compatibility", "type": "string" }, "delivery_mode": { "allOf": [ { "$ref": "#/components/schemas/datastore.DeliveryMode" } ], "description": "Delivery mode configuration" }, "endpoint_id": { "description": "Destination endpoint ID", "type": "string" }, "filter_config": { "allOf": [ { "$ref": "#/components/schemas/models.FilterConfiguration" } ], "description": "Filter configuration" }, "function": { "description": "Convoy supports mutating your request payload using a js function. Use this field\nto specify a `transform` function for this purpose. See this[https://docs.getconvoy.io/product-manual/subscriptions#functions] for more", "type": "string" }, "name": { "description": "Subscription Nme", "type": "string" }, "rate_limit_config": { "allOf": [ { "$ref": "#/components/schemas/models.RateLimitConfiguration" } ], "description": "Rate limit configuration" }, "source_id": { "description": "Source Id", "type": "string" } }, "type": "object" }, "models.CustomResponse": { "properties": { "body": { "type": "string" }, "content_type": { "type": "string" } }, "type": "object" }, "models.DynamicEvent": { "properties": { "custom_headers": { "additionalProperties": { "type": "string" }, "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", "nullable": true, "type": "object" }, "data": { "additionalProperties": true, "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", "nullable": true, "type": "object" }, "event_type": { "description": "Event Type is used for filtering and debugging e.g invoice.paid", "type": "string" }, "event_types": { "description": "A list of event types for the subscription filter config", "items": { "type": "string" }, "type": "array" }, "idempotency_key": { "description": "Specify a key for event deduplication", "type": "string" }, "secret": { "description": "Endpoint's webhook secret. If not provided, Convoy autogenerates one for the endpoint.", "type": "string" }, "url": { "description": "URL is the endpoint's URL prefixed with https. non-https urls are currently\nnot supported.", "type": "string" } }, "type": "object" }, "models.EndpointAuthentication": { "properties": { "api_key": { "$ref": "#/components/schemas/models.ApiKey" }, "basic_auth": { "$ref": "#/components/schemas/models.BasicAuth" }, "oauth2": { "$ref": "#/components/schemas/models.OAuth2" }, "type": { "$ref": "#/components/schemas/datastore.EndpointAuthenticationType" } }, "type": "object" }, "models.EndpointResponse": { "properties": { "advanced_signatures": { "type": "boolean" }, "authentication": { "allOf": [ { "$ref": "#/components/schemas/datastore.EndpointAuthentication" } ], "nullable": true }, "cb_state": { "description": "CBState is the circuit breaker state (\"open\", \"half-open\", \"closed\") so the UI\ncan reflect a tripped breaker on the endpoint status. Nil when CB is\noff/unlicensed or has no sample for this endpoint.", "nullable": true, "type": "string" }, "content_type": { "type": "string" }, "created_at": { "type": "string" }, "deleted_at": { "nullable": true, "type": "string" }, "description": { "type": "string" }, "events": { "type": "integer" }, "failure_count": { "nullable": true, "type": "integer" }, "failure_rate": { "description": "FailureRate is the circuit breaker's rolling failure rate for this endpoint.\nIt is a pointer so the API can return null when no rate was computed (circuit\nbreaker feature off, or sampler not running), distinct from a genuine 0%.", "nullable": true, "type": "number" }, "http_timeout": { "type": "integer" }, "mtls_client_cert": { "allOf": [ { "$ref": "#/components/schemas/datastore.MtlsClientCert" } ], "description": "mTLS client certificate configuration", "nullable": true }, "name": { "type": "string" }, "owner_id": { "type": "string" }, "period_failure_rate": { "description": "PeriodFailureRate is the period failure rate from event_deliveries,\n(Failure+Retry)/(Success+Failure+Retry). Retry counts as failed-so-far.\nNil when the range has no counted deliveries; sibling counts are transient.", "nullable": true, "type": "number" }, "project_id": { "type": "string" }, "rate_limit": { "type": "integer" }, "rate_limit_duration": { "type": "integer" }, "retry_count": { "nullable": true, "type": "integer" }, "secrets": { "items": { "$ref": "#/components/schemas/datastore.Secret" }, "type": "array" }, "slack_webhook_url": { "type": "string" }, "status": { "$ref": "#/components/schemas/datastore.EndpointStatus" }, "success_count": { "nullable": true, "type": "integer" }, "support_email": { "type": "string" }, "uid": { "type": "string" }, "updated_at": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "models.EventDeliveryResponse": { "properties": { "acknowledged_at": { "nullable": true, "type": "string" }, "cli_metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.CLIMetadata" } ], "nullable": true }, "created_at": { "type": "string" }, "deleted_at": { "nullable": true, "type": "string" }, "delivery_mode": { "$ref": "#/components/schemas/datastore.DeliveryMode" }, "description": { "type": "string" }, "device_id": { "type": "string" }, "device_metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.Device" } ], "nullable": true }, "endpoint_id": { "type": "string" }, "endpoint_metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.Endpoint" } ], "nullable": true }, "event_id": { "type": "string" }, "event_metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.Event" } ], "nullable": true }, "event_type": { "type": "string" }, "headers": { "$ref": "#/components/schemas/httpheader.HTTPHeader" }, "idempotency_key": { "type": "string" }, "latency": { "description": "Deprecated: Latency is deprecated.", "type": "string" }, "latency_seconds": { "type": "number" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.Metadata" } ], "nullable": true }, "project_id": { "type": "string" }, "source_metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.Source" } ], "nullable": true }, "status": { "$ref": "#/components/schemas/datastore.EventDeliveryStatus" }, "subscription_id": { "type": "string" }, "target_url": { "type": "string" }, "uid": { "type": "string" }, "updated_at": { "type": "string" }, "url_query_params": { "type": "string" } }, "type": "object" }, "models.EventResponse": { "properties": { "acknowledged_at": { "nullable": true, "type": "string" }, "app_id": { "description": "Deprecated", "type": "string" }, "created_at": { "type": "string" }, "data": { "additionalProperties": true, "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", "nullable": true, "type": "object" }, "deleted_at": { "nullable": true, "type": "string" }, "endpoint_metadata": { "items": { "$ref": "#/components/schemas/datastore.Endpoint" }, "type": "array" }, "endpoints": { "items": { "type": "string" }, "type": "array" }, "event_type": { "type": "string" }, "headers": { "$ref": "#/components/schemas/httpheader.HTTPHeader" }, "idempotency_key": { "type": "string" }, "is_duplicate_event": { "type": "boolean" }, "metadata": { "type": "string" }, "project_id": { "type": "string" }, "raw": { "type": "string" }, "source_id": { "type": "string" }, "source_metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.Source" } ], "nullable": true }, "status": { "$ref": "#/components/schemas/datastore.EventStatus" }, "uid": { "type": "string" }, "updated_at": { "type": "string" }, "url_path": { "type": "string" }, "url_query_params": { "type": "string" } }, "type": "object" }, "models.EventTypeResponse": { "properties": { "category": { "type": "string" }, "deprecated_at": { "nullable": true, "type": "string" }, "description": { "type": "string" }, "json_schema": { "additionalProperties": true, "nullable": true, "type": "object" }, "name": { "type": "string" }, "uid": { "type": "string" } }, "type": "object" }, "models.ExpireSecret": { "properties": { "expiration": { "description": "Amount of time to wait before expiring the old endpoint secret.\nIf AdvancedSignatures is turned on for the project, signatures for both secrets will be generated up until\nthe old signature is expired.", "type": "integer" }, "secret": { "description": "New Endpoint secret value.", "type": "string" } }, "type": "object" }, "models.FS": { "properties": { "body": { "$ref": "#/components/schemas/datastore.M" }, "headers": { "$ref": "#/components/schemas/datastore.M" }, "path": { "$ref": "#/components/schemas/datastore.M" }, "query": { "$ref": "#/components/schemas/datastore.M" } }, "type": "object" }, "models.FanoutEvent": { "properties": { "custom_headers": { "additionalProperties": { "type": "string" }, "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", "nullable": true, "type": "object" }, "data": { "additionalProperties": true, "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", "nullable": true, "type": "object" }, "event_type": { "description": "Event Type is used for filtering and debugging e.g invoice.paid", "type": "string" }, "idempotency_key": { "description": "Specify a key for event deduplication", "type": "string" }, "owner_id": { "description": "Used for fanout, sends this event to all endpoints with this OwnerID.", "type": "string" } }, "type": "object" }, "models.FilterConfiguration": { "properties": { "event_types": { "description": "List of event types that the subscription should match", "items": { "type": "string" }, "type": "array" }, "filter": { "allOf": [ { "$ref": "#/components/schemas/models.FS" } ], "description": "Body & Header filters" } }, "type": "object" }, "models.FilterResponse": { "properties": { "body": { "$ref": "#/components/schemas/datastore.M" }, "enabled_at": { "nullable": true, "type": "string" }, "event_type": { "type": "string" }, "headers": { "$ref": "#/components/schemas/datastore.M" }, "path": { "$ref": "#/components/schemas/datastore.M" }, "query": { "$ref": "#/components/schemas/datastore.M" }, "raw_body": { "$ref": "#/components/schemas/datastore.M" }, "raw_headers": { "$ref": "#/components/schemas/datastore.M" }, "raw_path": { "$ref": "#/components/schemas/datastore.M" }, "raw_query": { "$ref": "#/components/schemas/datastore.M" }, "subscription_id": { "type": "string" }, "uid": { "type": "string" } }, "type": "object" }, "models.FilterSchema": { "properties": { "body": {}, "header": {}, "path": {}, "query": {} }, "type": "object" }, "models.FunctionRequest": { "properties": { "function": { "type": "string" }, "payload": { "additionalProperties": {}, "nullable": true, "type": "object" }, "type": { "type": "string" } }, "type": "object" }, "models.FunctionResponse": { "properties": { "log": { "items": { "type": "string" }, "type": "array" }, "payload": {} }, "type": "object" }, "models.GooglePubSubConfig": { "properties": { "project_id": { "type": "string" }, "service_account": { "description": "encoding/json marshals []byte as a base64 string on the wire.", "format": "byte", "type": "string" }, "subscription_id": { "type": "string" } }, "type": "object" }, "models.HMac": { "properties": { "encoding": { "$ref": "#/components/schemas/datastore.EncodingType" }, "hash": { "type": "string" }, "header": { "type": "string" }, "secret": { "type": "string" } }, "required": [ "encoding", "hash", "header", "secret" ], "type": "object" }, "models.IDs": { "properties": { "ids": { "description": "A list of event delivery IDs to forcefully resend.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "models.ImportOpenAPISpec": { "properties": { "spec": { "type": "string" } }, "type": "object" }, "models.KafkaAuth": { "properties": { "hash": { "type": "string" }, "password": { "type": "string" }, "tls": { "type": "boolean" }, "type": { "type": "string" }, "username": { "type": "string" } }, "type": "object" }, "models.KafkaPubSubConfig": { "properties": { "auth": { "$ref": "#/components/schemas/models.KafkaAuth" }, "brokers": { "items": { "type": "string" }, "type": "array" }, "consumer_group_id": { "type": "string" }, "topic_name": { "type": "string" } }, "type": "object" }, "models.MetaEventConfiguration": { "properties": { "event_type": { "items": { "type": "string" }, "type": "array" }, "is_enabled": { "type": "boolean" }, "secret": { "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "models.MetaEventResponse": { "properties": { "attempt": { "allOf": [ { "$ref": "#/components/schemas/datastore.MetaEventAttempt" } ], "nullable": true }, "created_at": { "type": "string" }, "deleted_at": { "nullable": true, "type": "string" }, "event_type": { "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.Metadata" } ], "nullable": true }, "project_id": { "type": "string" }, "status": { "$ref": "#/components/schemas/datastore.EventDeliveryStatus" }, "uid": { "type": "string" }, "updated_at": { "type": "string" } }, "type": "object" }, "models.MtlsClientCert": { "properties": { "client_cert": { "description": "ClientCert is the client certificate PEM string", "type": "string" }, "client_key": { "description": "ClientKey is the client private key PEM string", "type": "string" } }, "type": "object" }, "models.OAuth2": { "properties": { "audience": { "type": "string" }, "authentication_type": { "type": "string" }, "client_id": { "type": "string" }, "client_secret": { "type": "string" }, "expiry_time_unit": { "description": "Expiry time unit (seconds, milliseconds, minutes, hours)", "type": "string" }, "field_mapping": { "allOf": [ { "$ref": "#/components/schemas/models.OAuth2FieldMapping" } ], "description": "Field mapping for flexible token response parsing" }, "grant_type": { "type": "string" }, "issuer": { "type": "string" }, "scope": { "type": "string" }, "signing_algorithm": { "type": "string" }, "signing_key": { "$ref": "#/components/schemas/models.OAuth2SigningKey" }, "subject": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "models.OAuth2FieldMapping": { "properties": { "access_token": { "description": "Field name for access token (e.g., \"accessToken\", \"access_token\", \"token\")", "type": "string" }, "expires_in": { "description": "Field name for expiry time (e.g., \"expiresIn\", \"expires_in\", \"expiresAt\")", "type": "string" }, "token_type": { "description": "Field name for token type (e.g., \"tokenType\", \"token_type\")", "type": "string" } }, "type": "object" }, "models.OAuth2SigningKey": { "properties": { "crv": { "description": "EC (Elliptic Curve) key fields", "type": "string" }, "d": { "description": "Private key (EC) or private exponent (RSA)", "type": "string" }, "dp": { "description": "RSA first factor CRT exponent (RSA private key only)", "type": "string" }, "dq": { "description": "RSA second factor CRT exponent (RSA private key only)", "type": "string" }, "e": { "description": "RSA public exponent (RSA only)", "type": "string" }, "kid": { "description": "Key ID", "type": "string" }, "kty": { "description": "Key type: \"EC\" or \"RSA\"", "type": "string" }, "n": { "description": "RSA key fields", "type": "string" }, "p": { "description": "RSA first prime factor (RSA private key only)", "type": "string" }, "q": { "description": "RSA second prime factor (RSA private key only)", "type": "string" }, "qi": { "description": "RSA first CRT coefficient (RSA private key only)", "type": "string" }, "x": { "description": "X coordinate (EC only)", "type": "string" }, "y": { "description": "Y coordinate (EC only)", "type": "string" } }, "type": "object" }, "models.OnboardItem": { "properties": { "auth_password": { "type": "string" }, "auth_username": { "type": "string" }, "event_type": { "type": "string" }, "name": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "models.OnboardValidationError": { "properties": { "field": { "type": "string" }, "message": { "type": "string" }, "row": { "type": "integer" } }, "type": "object" }, "models.OptionalTime": { "properties": { "set": { "type": "boolean" }, "time": { "type": "string" } }, "type": "object" }, "models.PagedResponse": { "properties": { "content": {}, "pagination": { "allOf": [ { "$ref": "#/components/schemas/datastore.PaginationData" } ], "nullable": true } }, "type": "object" }, "models.ProjectConfig": { "properties": { "add_event_id_trace_headers": { "description": "Controls of the Event ID and Event Delivery ID Headers are added to the request when events are dispatched to endpoints", "type": "boolean" }, "circuit_breaker": { "allOf": [ { "$ref": "#/components/schemas/datastore.CircuitBreakerConfiguration" } ], "description": "CircuitBreaker is used to configure the project's circuit breaker settings" }, "disable_endpoint": { "description": "Controls if the project will disable and endpoint after the retry threshold for an event is reached", "type": "boolean" }, "max_payload_read_size": { "description": "Specifies how many bytes and incoming project should read from the ingest request, and how many bytes an outgoing project should from the response of your endpoints\nDefaults to 50KB.", "type": "integer" }, "meta_event": { "allOf": [ { "$ref": "#/components/schemas/models.MetaEventConfiguration" } ], "description": "MetaEvent is used to configure the project's meta events" }, "multiple_endpoint_subscriptions": { "description": "MultipleEndpointSubscriptions is used to configure if multiple subscriptions\ncan be created for the endpoint in a project", "type": "boolean" }, "ratelimit": { "allOf": [ { "$ref": "#/components/schemas/models.RateLimitConfiguration" } ], "description": "RateLimit is used to configure the projects rate limiting config values" }, "replay_attacks_prevention_enabled": { "description": "Controls if your project will add a timestamp to it's webhook signature header to prevent a replay attack, See this blog post[https://getconvoy.io/blog/generating-stripe-like-webhook-signatures] for more]", "type": "boolean" }, "request_id_header": { "allOf": [ { "$ref": "#/components/schemas/config.RequestIDHeaderProvider" } ], "description": "RequestIDHeader is the outbound header name for the stable request id sent on webhook deliveries." }, "search_policy": { "description": "Specify the interval in hours for which the event tokenizer runs", "type": "string" }, "signature": { "allOf": [ { "$ref": "#/components/schemas/models.SignatureConfiguration" } ], "description": "Signature is used to configure the project's signature header versions" }, "ssl": { "allOf": [ { "$ref": "#/components/schemas/models.SSLConfiguration" } ], "description": "SSL is used to configure the project's endpoint ssl enforcement rules" }, "strategy": { "allOf": [ { "$ref": "#/components/schemas/models.StrategyConfiguration" } ], "description": "Strategy is used to configure the project's retry strategies for failing events." }, "sync_dynamic_event_ack": { "description": "SyncDynamicEventAck waits for dynamic endpoint/subscription resolve before\nacknowledging POST /events/dynamic. When false, the handler returns 201 after enqueue.", "type": "boolean" } }, "type": "object" }, "models.ProjectResponse": { "properties": { "config": { "allOf": [ { "$ref": "#/components/schemas/datastore.ProjectConfig" } ], "nullable": true }, "created_at": { "type": "string" }, "deleted_at": { "nullable": true, "type": "string" }, "logo_url": { "type": "string" }, "name": { "type": "string" }, "organisation_id": { "type": "string" }, "retained_events": { "type": "integer" }, "statistics": { "allOf": [ { "$ref": "#/components/schemas/datastore.ProjectStatistics" } ], "nullable": true }, "type": { "$ref": "#/components/schemas/datastore.ProjectType" }, "uid": { "type": "string" }, "updated_at": { "type": "string" } }, "type": "object" }, "models.PubSubConfig": { "properties": { "amqp": { "$ref": "#/components/schemas/models.AmqpPubSubconfig" }, "google": { "$ref": "#/components/schemas/models.GooglePubSubConfig" }, "kafka": { "$ref": "#/components/schemas/models.KafkaPubSubConfig" }, "sqs": { "$ref": "#/components/schemas/models.SQSPubSubConfig" }, "type": { "$ref": "#/components/schemas/datastore.PubSubType" }, "workers": { "type": "integer" } }, "type": "object" }, "models.RateLimitConfiguration": { "properties": { "count": { "type": "integer" }, "duration": { "type": "integer" } }, "type": "object" }, "models.RetryConfiguration": { "properties": { "duration": { "description": "Used to specify a valid Go time duration e.g 10s, 1h3m for how long to wait between event delivery retries", "type": "string" }, "interval_seconds": { "description": "Used to specify a time in seconds for how long to wait between event delivery retries,", "type": "integer" }, "retry_count": { "description": "Used to specify the max number of retries", "type": "integer" }, "type": { "allOf": [ { "$ref": "#/components/schemas/datastore.StrategyProvider" } ], "description": "Retry Strategy type" } }, "type": "object" }, "models.SQSPubSubConfig": { "properties": { "access_key_id": { "type": "string" }, "default_region": { "type": "string" }, "queue_name": { "type": "string" }, "secret_key": { "type": "string" } }, "type": "object" }, "models.SSLConfiguration": { "properties": { "enforce_secure_endpoints": { "type": "boolean" } }, "type": "object" }, "models.SignatureConfiguration": { "properties": { "header": { "$ref": "#/components/schemas/config.SignatureHeaderProvider" }, "versions": { "items": { "$ref": "#/components/schemas/models.SignatureVersion" }, "type": "array" } }, "type": "object" }, "models.SignatureVersion": { "properties": { "created_at": { "type": "string" }, "encoding": { "type": "string" }, "hash": { "type": "string" }, "uid": { "type": "string" } }, "type": "object" }, "models.SourceResponse": { "properties": { "body_function": { "nullable": true, "type": "string" }, "created_at": { "type": "string" }, "custom_response": { "$ref": "#/components/schemas/datastore.CustomResponse" }, "deleted_at": { "nullable": true, "type": "string" }, "event_type_location": { "type": "string" }, "forward_headers": { "items": { "type": "string" }, "type": "array" }, "header_function": { "nullable": true, "type": "string" }, "idempotency_keys": { "items": { "type": "string" }, "type": "array" }, "is_disabled": { "type": "boolean" }, "mask_id": { "type": "string" }, "name": { "type": "string" }, "project_id": { "type": "string" }, "provider": { "$ref": "#/components/schemas/datastore.SourceProvider" }, "provider_config": { "allOf": [ { "$ref": "#/components/schemas/datastore.ProviderConfig" } ], "nullable": true }, "pub_sub": { "allOf": [ { "$ref": "#/components/schemas/datastore.PubSubConfig" } ], "nullable": true }, "type": { "$ref": "#/components/schemas/datastore.SourceType" }, "uid": { "type": "string" }, "updated_at": { "type": "string" }, "url": { "type": "string" }, "verifier": { "allOf": [ { "$ref": "#/components/schemas/datastore.VerifierConfig" } ], "nullable": true } }, "type": "object" }, "models.StrategyConfiguration": { "properties": { "duration": { "type": "integer" }, "retry_count": { "type": "integer" }, "type": { "type": "string" } }, "type": "object" }, "models.SubscriptionResponse": { "properties": { "alert_config": { "allOf": [ { "$ref": "#/components/schemas/datastore.AlertConfiguration" } ], "description": "subscription config", "nullable": true }, "created_at": { "type": "string" }, "deleted_at": { "nullable": true, "type": "string" }, "delivery_mode": { "$ref": "#/components/schemas/datastore.DeliveryMode" }, "device_metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.Device" } ], "nullable": true }, "endpoint_metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.Endpoint" } ], "nullable": true }, "filter_config": { "allOf": [ { "$ref": "#/components/schemas/datastore.FilterConfiguration" } ], "nullable": true }, "function": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "project_id": { "type": "string" }, "rate_limit_config": { "allOf": [ { "$ref": "#/components/schemas/datastore.RateLimitConfiguration" } ], "nullable": true }, "retry_config": { "allOf": [ { "$ref": "#/components/schemas/datastore.RetryConfiguration" } ], "nullable": true }, "source_metadata": { "allOf": [ { "$ref": "#/components/schemas/datastore.Source" } ], "nullable": true }, "type": { "$ref": "#/components/schemas/datastore.SubscriptionType" }, "uid": { "type": "string" }, "updated_at": { "type": "string" } }, "type": "object" }, "models.TestFilter": { "properties": { "request": { "allOf": [ { "$ref": "#/components/schemas/models.FilterSchema" } ], "description": "Same Request & Headers" }, "schema": { "allOf": [ { "$ref": "#/components/schemas/models.FilterSchema" } ], "description": "Sample test schema" } }, "type": "object" }, "models.TestFilterRequest": { "properties": { "payload": { "description": "Sample payload to test against body filter rules. Optional when request scopes are supplied." }, "request": { "allOf": [ { "$ref": "#/components/schemas/models.TestFilterRequestScopes" } ], "description": "Request scopes to test against the filter." } }, "type": "object" }, "models.TestFilterRequestScopes": { "properties": { "body": {}, "header": { "$ref": "#/components/schemas/datastore.M" }, "headers": { "allOf": [ { "$ref": "#/components/schemas/datastore.M" } ], "description": "Headers accepts either \"headers\" or \"header\" for compatibility with the subscription filter tester." }, "path": { "$ref": "#/components/schemas/datastore.M" }, "query": { "$ref": "#/components/schemas/datastore.M" } }, "type": "object" }, "models.TestFilterResponse": { "properties": { "is_match": { "description": "Whether the payload matches the filter criteria", "type": "boolean" } }, "type": "object" }, "models.TestOAuth2Request": { "properties": { "oauth2": { "$ref": "#/components/schemas/models.OAuth2" } }, "type": "object" }, "models.TestOAuth2Response": { "properties": { "access_token": { "type": "string" }, "error": { "type": "string" }, "expires_at": { "type": "string" }, "message": { "type": "string" }, "success": { "type": "boolean" }, "token_type": { "type": "string" } }, "type": "object" }, "models.UpdateCustomResponse": { "properties": { "body": { "nullable": true, "type": "string" }, "content_type": { "nullable": true, "type": "string" } }, "type": "object" }, "models.UpdateEndpoint": { "properties": { "advanced_signatures": { "description": "Convoy supports two [signature formats](https://getconvoy.io/docs/product-manual/signatures)\n-- simple or advanced. If left unspecified, we default to false.", "type": "boolean" }, "authentication": { "allOf": [ { "$ref": "#/components/schemas/models.EndpointAuthentication" } ], "description": "This is used to define any custom authentication required by the endpoint. This\nshouldn't be needed often because webhook endpoints usually should be exposed to\nthe internet." }, "content_type": { "description": "Content type for the endpoint. Defaults to application/json if not specified.", "type": "string" }, "description": { "description": "Human-readable description of the endpoint. Think of this as metadata describing\nthe endpoint", "type": "string" }, "http_timeout": { "description": "Define endpoint http timeout in seconds.", "type": "integer" }, "is_disabled": { "description": "This is used to manually enable/disable the endpoint.", "type": "boolean" }, "mtls_client_cert": { "allOf": [ { "$ref": "#/components/schemas/models.MtlsClientCert" } ], "description": "mTLS client certificate configuration for the endpoint" }, "name": { "type": "string" }, "owner_id": { "description": "The OwnerID is used to group more than one endpoint together to achieve\n[fanout](https://getconvoy.io/docs/manual/endpoints#Endpoint%20Owner%20ID)", "type": "string" }, "rate_limit": { "description": "Rate limit is the total number of requests to be sent to an endpoint in\nthe time duration specified in RateLimitDuration", "type": "integer" }, "rate_limit_duration": { "description": "Rate limit duration specifies the time range for the rate limit.", "type": "integer" }, "secret": { "description": "Endpoint's webhook secret. If not provided, Convoy autogenerates one for the endpoint.", "type": "string" }, "slack_webhook_url": { "description": "Slack webhook URL is an alternative method to support email where endpoint developers\ncan receive failure notifications on a slack channel.", "type": "string" }, "support_email": { "description": "Endpoint developers support email. This is used for communicating endpoint state\nchanges. You should always turn this on when disabling endpoints are enabled.", "type": "string" }, "url": { "description": "URL is the endpoint's URL prefixed with https. non-https urls are currently\nnot supported.", "type": "string" } }, "type": "object" }, "models.UpdateEventType": { "properties": { "category": { "description": "Category is a product-specific grouping for the event type", "type": "string" }, "description": { "description": "Description is used to describe what the event type does", "type": "string" }, "json_schema": { "additionalProperties": true, "description": "JSONSchema is the JSON structure of the event type", "nullable": true, "type": "object" } }, "type": "object" }, "models.UpdateFilterRequest": { "properties": { "body": { "allOf": [ { "$ref": "#/components/schemas/datastore.M" } ], "description": "Body matching criteria (optional)" }, "enabled_at": { "allOf": [ { "$ref": "#/components/schemas/models.OptionalTime" } ], "description": "Non-null when this filter is active." }, "event_type": { "description": "Type of event this filter applies to (optional)", "type": "string" }, "headers": { "allOf": [ { "$ref": "#/components/schemas/datastore.M" } ], "description": "Header matching criteria (optional)" }, "is_flattened": { "description": "Whether the filter uses flattened JSON paths (optional)", "type": "boolean" }, "path": { "allOf": [ { "$ref": "#/components/schemas/datastore.M" } ], "description": "Path matching criteria (optional)" }, "query": { "allOf": [ { "$ref": "#/components/schemas/datastore.M" } ], "description": "Query matching criteria (optional)" } }, "type": "object" }, "models.UpdateProject": { "properties": { "config": { "allOf": [ { "$ref": "#/components/schemas/models.ProjectConfig" } ], "description": "Project Config" }, "logo_url": { "type": "string" }, "name": { "description": "Project Name", "type": "string" } }, "type": "object" }, "models.UpdateSource": { "properties": { "body_function": { "description": "Function is a javascript function used to mutate the payload\nimmediately after ingesting an event", "type": "string" }, "custom_response": { "allOf": [ { "$ref": "#/components/schemas/models.UpdateCustomResponse" } ], "description": "Custom response is used to define a custom response for incoming\nwebhooks project sources only." }, "event_type_location": { "description": "EventTypeLocation is used to specify where Convoy should read the event type\nfrom an incoming webhook request.", "type": "string" }, "forward_headers": { "description": "Soecfy header you want convoy to save from the ingest request and forward to your endpoints when the event is dispatched.", "items": { "type": "string" }, "type": "array" }, "header_function": { "description": "Function is a javascript function used to mutate the headers\nimmediately after ingesting an event", "type": "string" }, "idempotency_keys": { "description": "IdempotencyKeys are used to specify parts of a webhook request to uniquely\nidentify the event in an incoming webhooks project.", "items": { "type": "string" }, "type": "array" }, "is_disabled": { "description": "This is used to manually enable/disable the source.", "type": "boolean" }, "name": { "description": "Source name.", "type": "string" }, "pub_sub": { "allOf": [ { "$ref": "#/components/schemas/models.PubSubConfig" } ], "description": "PubSub are used to specify message broker sources for outgoing\nwebhooks projects, you only need to specify this when the source type is `pub_sub`." }, "type": { "allOf": [ { "$ref": "#/components/schemas/datastore.SourceType" } ], "description": "Source Type." }, "verifier": { "allOf": [ { "$ref": "#/components/schemas/models.VerifierConfig" } ], "description": "Verifiers are used to verify webhook events ingested in incoming\nwebhooks projects. If set, type is required and match the verifier\ntype object you choose." } }, "type": "object" }, "models.UpdateSubscription": { "properties": { "alert_config": { "allOf": [ { "$ref": "#/components/schemas/models.AlertConfiguration" } ], "description": "Alert configuration" }, "app_id": { "description": "Deprecated but necessary for backward compatibility", "type": "string" }, "delivery_mode": { "allOf": [ { "$ref": "#/components/schemas/datastore.DeliveryMode" } ], "description": "Delivery mode configuration" }, "endpoint_id": { "description": "Destination endpoint ID", "type": "string" }, "filter_config": { "allOf": [ { "$ref": "#/components/schemas/models.FilterConfiguration" } ], "description": "Filter configuration" }, "function": { "description": "Convoy supports mutating your request payload using a js function. Use this field\nto specify a `transform` function for this purpose. See this[https://docs.getconvoy.io/product-manual/subscriptions#functions] for more", "type": "string" }, "name": { "description": "Subscription Nme", "type": "string" }, "rate_limit_config": { "allOf": [ { "$ref": "#/components/schemas/models.RateLimitConfiguration" } ], "description": "Rate limit configuration" }, "retry_config": { "allOf": [ { "$ref": "#/components/schemas/models.RetryConfiguration" } ], "description": "Retry configuration" }, "source_id": { "description": "Source Id", "type": "string" } }, "type": "object" }, "models.VerifierConfig": { "properties": { "api_key": { "$ref": "#/components/schemas/models.ApiKey" }, "basic_auth": { "$ref": "#/components/schemas/models.BasicAuth" }, "hmac": { "$ref": "#/components/schemas/models.HMac" }, "type": { "$ref": "#/components/schemas/datastore.VerifierType" } }, "required": [ "type" ], "type": "object" }, "util.ServerResponse": { "properties": { "message": { "type": "string" }, "status": { "type": "boolean" } }, "type": "object" } }, "securitySchemes": { "ApiKeyAuth": { "type": "http", "scheme": "bearer" } } }, "tags": [ { "description": "Project related APIs", "name": "Projects" }, { "description": "Subscription related APIs", "name": "Subscriptions" }, { "description": "Endpoint related APIs", "name": "Endpoints" }, { "description": "Event related APIs", "name": "Events" }, { "description": "Source related APIs", "name": "Sources" }, { "description": "EventDelivery related APIs", "name": "Event Deliveries" }, { "description": "Delivery Attempt related APIs", "name": "Delivery Attempts" }, { "description": "Portal Links related APIs", "name": "Portal Links" }, { "description": "Meta Events related APIs", "name": "Meta Events" }, { "description": "Event Types related APIs", "name": "EventTypes" }, { "description": "Filters related APIs", "name": "Filters" }, { "description": "Onboard related APIs", "name": "Onboard" } ] }