From a25eef5bbe6a3784151910718a592809477cc22b Mon Sep 17 00:00:00 2001 From: Raymond Tukpe Date: Fri, 17 Apr 2026 11:36:19 +0200 Subject: [PATCH 1/9] Update autogenerated Swagger docs and API specification --- docs/annotate_dtos/main.go | 208 + docs/docs.go | 37 +- docs/fix_openapi_spec.sh | 164 + docs/swagger.json | 20761 +++++++++++++++---------------- docs/swagger.yaml | 5678 +++++---- docs/v3/openapi3.json | 22944 ++++++++++++++++++----------------- docs/v3/openapi3.yaml | 12784 +++++++++---------- 7 files changed, 31813 insertions(+), 30763 deletions(-) create mode 100644 docs/annotate_dtos/main.go create mode 100755 docs/fix_openapi_spec.sh diff --git a/docs/annotate_dtos/main.go b/docs/annotate_dtos/main.go new file mode 100644 index 0000000000..264d430ec6 --- /dev/null +++ b/docs/annotate_dtos/main.go @@ -0,0 +1,208 @@ +// tools/annotate_dtos/main.go +// +//nolint:all +package main + +import ( + "fmt" + "go/ast" + "go/parser" + "go/token" + "io/ioutil" + "os" + "path/filepath" + "strings" +) + +func main() { + dryRun := len(os.Args) > 1 && os.Args[1] == "--dry-run" + + dtoDir := "./api/models" + if len(os.Args) > 2 { + dtoDir = os.Args[2] + } + + fmt.Printf("Using AST to add nullable extensions in: %s\n", dtoDir) + + err := filepath.Walk(dtoDir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + + if !info.IsDir() && strings.HasSuffix(path, ".go") { + processFileWithAST(path, dryRun) + } + return nil + }) + + if err != nil { + fmt.Printf("Error: %v\n", err) + } +} + +func processFileWithAST(filePath string, dryRun bool) { + content, err := ioutil.ReadFile(filePath) + if err != nil { + fmt.Printf("Error reading %s: %v\n", filePath, err) + return + } + + // Check if file contains Response structs + if !strings.Contains(string(content), "Response") { + return + } + + fset := token.NewFileSet() + node, err := parser.ParseFile(fset, filePath, content, parser.ParseComments) + if err != nil { + fmt.Printf("Error parsing %s: %v\n", filePath, err) + return + } + + var fieldsToFix []fieldInfo + + ast.Inspect(node, func(n ast.Node) bool { + typeSpec, ok := n.(*ast.TypeSpec) + if !ok { + return true + } + + structType, ok := typeSpec.Type.(*ast.StructType) + if !ok { + return true + } + + // Only process Response structs + if !strings.Contains(typeSpec.Name.Name, "Response") { + return true + } + + for _, field := range structType.Fields.List { + if field.Tag == nil || len(field.Names) == 0 { + continue + } + + tagValue := field.Tag.Value + // Remove backticks + tagValue = strings.Trim(tagValue, "`") + + // Skip if already has extensions:"x-nullable" + if strings.Contains(tagValue, `extensions:"x-nullable"`) { + continue + } + + // Check if field type is nullable + fieldType := getFieldTypeString(field.Type) + if isNullableTypeAST(fieldType) { + pos := fset.Position(field.Pos()) + fieldsToFix = append(fieldsToFix, fieldInfo{ + name: field.Names[0].Name, + typeStr: fieldType, + tag: tagValue, + line: pos.Line, + filename: filePath, + }) + } + } + return true + }) + + if len(fieldsToFix) == 0 { + return + } + + if dryRun { + fmt.Printf("[DRY] %s: %d fields need extensions:\"x-nullable\"\n", + filepath.Base(filePath), len(fieldsToFix)) + for _, field := range fieldsToFix { + fmt.Printf(" - %s (%s)\n", field.name, field.typeStr) + } + return + } + + // Actually fix the file + lines := strings.Split(string(content), "\n") + modified := false + + for _, field := range fieldsToFix { + lineIndex := field.line - 1 + if lineIndex >= len(lines) { + continue + } + + line := lines[lineIndex] + + // Find the tag and add extensions:"x-nullable" + tagStart := strings.Index(line, "`") + tagEnd := strings.LastIndex(line, "`") + if tagStart == -1 || tagEnd == -1 { + continue + } + + tagContent := line[tagStart+1 : tagEnd] + newTagContent := tagContent + ` extensions:"x-nullable"` + newLine := line[:tagStart+1] + newTagContent + line[tagEnd:] + + lines[lineIndex] = newLine + modified = true + + fmt.Printf("✓ %s: %s\n", filepath.Base(filePath), field.name) + } + + if modified { + output := strings.Join(lines, "\n") + if err := ioutil.WriteFile(filePath, []byte(output), 0644); err != nil { + fmt.Printf("Error writing %s: %v\n", filePath, err) + } + } +} + +type fieldInfo struct { + name string + typeStr string + tag string + line int + filename string +} + +func getFieldTypeString(expr ast.Expr) string { + switch t := expr.(type) { + case *ast.Ident: + return t.Name + case *ast.SelectorExpr: + xIdent, ok := t.X.(*ast.Ident) + if !ok { + return "" + } + return fmt.Sprintf("%s.%s", xIdent.Name, t.Sel.Name) + case *ast.StarExpr: + return "*" + getFieldTypeString(t.X) + case *ast.ArrayType: + return "[]" + getFieldTypeString(t.Elt) + default: + return "" + } +} + +func isNullableTypeAST(typeStr string) bool { + // Check for null package types + if strings.HasPrefix(typeStr, "null.") { + return true + } + + // Check for sql.Null types + if strings.HasPrefix(typeStr, "sql.Null") { + return true + } + + // Check for pointer types + if strings.HasPrefix(typeStr, "*") { + // Don't treat pointers to slices/maps as nullable for JSON + if strings.HasPrefix(typeStr, "*[]") || strings.HasPrefix(typeStr, "*map[") { + return false + } + return true + } + + return false +} diff --git a/docs/docs.go b/docs/docs.go index 4271c1706f..8aebeacf7b 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1,4 +1,4 @@ -// Package docs Code generated by swaggo/swag at 2026-04-04 18:35:31.461401 -0500 CDT m=+1.373984501. DO NOT EDIT +// Package docs Code generated by swaggo/swag at 2026-04-17 11:31:54.508205 +0200 CEST m=+2.154965584. DO NOT EDIT package docs import "github.com/swaggo/swag" @@ -9997,7 +9997,12 @@ const docTemplate = `{ "properties": { "content": {}, "pagination": { - "$ref": "#/definitions/datastore.PaginationData" + "allOf": [ + { + "$ref": "#/definitions/datastore.PaginationData" + } + ], + "x-nullable": true } } }, @@ -10279,10 +10284,12 @@ const docTemplate = `{ "type": "object", "properties": { "body": { - "type": "string" + "type": "string", + "x-nullable": true }, "content_type": { - "type": "string" + "type": "string", + "x-nullable": true } } }, @@ -10577,10 +10584,6 @@ const docTemplate = `{ } }, "tags": [ - { - "description": "Organisation related APIs", - "name": "Organisations" - }, { "description": "Subscription related APIs", "name": "Subscriptions" @@ -10605,10 +10608,6 @@ const docTemplate = `{ "description": "Delivery Attempt related APIs", "name": "Delivery Attempts" }, - { - "description": "Project related APIs", - "name": "Projects" - }, { "description": "Portal Links related APIs", "name": "Portal Links" @@ -10616,6 +10615,18 @@ const docTemplate = `{ { "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" } ] }` @@ -10623,7 +10634,7 @@ const docTemplate = `{ // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ Version: "24.1.4", - Host: "dashboard.getconvoy.io", + Host: "us.getconvoy.cloud", BasePath: "/api", Schemes: []string{"https"}, Title: "Convoy API Reference", diff --git a/docs/fix_openapi_spec.sh b/docs/fix_openapi_spec.sh new file mode 100755 index 0000000000..4b28bc9045 --- /dev/null +++ b/docs/fix_openapi_spec.sh @@ -0,0 +1,164 @@ +#!/bin/bash +# fix-swagger-all.sh + +echo "đŸ”Ĩ Fixing Swagger 2.0 specs (all issues in one pass)..." + +# Check OS for sed compatibility +if [[ "$(uname)" == "Darwin" ]]; then + # macOS requires an empty string argument after -i + sed_inplace() { sed -i '' "$@"; } +else + # Linux + sed_inplace() { sed -i "$@"; } +fi + +# Check for required tools +if ! command -v jq &> /dev/null; then + echo "❌ jq is required. Install with: brew install jq (macOS) or apt-get install jq (Linux)" + exit 1 +fi + +if ! command -v yq &> /dev/null; then + echo "❌ yq is required. Install with: brew install yq (macOS) or snap install yq (Linux)" + exit 1 +fi + +# Function to fix a file (handles both JSON and YAML) +fix_file_inplace() { + local file="$1" + + if [ ! -f "$file" ]; then + echo "âš ī¸ $file not found, skipping..." + return + fi + + echo "Processing: $file" + + # Create backup + cp "$file" "${file}.bak" + + # Step 1: First fix nullable with sed (works on both JSON and YAML) + echo " Step 1: Fixing nullable fields..." + + if [[ "$file" == *.json ]]; then + # JSON fixes + sed_inplace 's/"x-nullable": true/"nullable": true/g' "$file" + sed_inplace 's/"x-nullable": false//g' "$file" + # Clean up extra commas + sed_inplace 's/,,/,/g' "$file" + sed_inplace 's/{,/{/g' "$file" + sed_inplace 's/,}/}/g' "$file" + + elif [[ "$file" == *.yaml ]] || [[ "$file" == *.yml ]]; then + # YAML fixes + sed_inplace 's/x-nullable: true/nullable: true/g' "$file" + sed_inplace '/x-nullable: false/d' "$file" + sed_inplace '/^[[:space:]]*x-nullable:/d' "$file" + fi + + # Step 2: Use jq/yq for structural fixes + echo " Step 2: Fixing content-type, produces, and allOf structures..." + + # Create temp file + tmpfile=$(mktemp) + + if [[ "$file" == *.json ]]; then + # Process JSON with jq + jq ' + # CRITICAL FIX: Ensure produces field exists for clean OpenAPI 3.0 conversion + # If no produces field exists, add it + if .produces | not then + .produces = ["application/json"] + # If produces is ["*/*"], fix it + elif .produces == ["*/*"] then + .produces = ["application/json"] + else . end | + + # Also ensure consumes exists for POST/PUT/PATCH + if .consumes | not then + .consumes = ["application/json"] + else . end | + + # Fix 2: Simplify allOf in definitions + .definitions |= with_entries( + .value |= ( + if type == "object" and has("allOf") then + .allOf | + reduce .[] as $item ({}; + if $item | type == "object" then + .properties = (.properties // {}) + ($item.properties // {}) | + .required = (.required // []) + ($item.required // []) + else . end + ) + else . end + ) + ) + ' "$file" > "$tmpfile" + + elif [[ "$file" == *.yaml ]] || [[ "$file" == *.yml ]]; then + # Convert YAML to JSON, fix it, convert back + yq eval -o=json "$file" | jq ' + # CRITICAL FIX: Ensure produces field exists + if .produces | not then + .produces = ["application/json"] + elif .produces == ["*/*"] then + .produces = ["application/json"] + else . end | + + if .consumes | not then + .consumes = ["application/json"] + else . end | + + .definitions |= with_entries( + .value |= ( + if type == "object" and has("allOf") then + .allOf | + reduce .[] as $item ({}; + if $item | type == "object" then + .properties = (.properties // {}) + ($item.properties // {}) | + .required = (.required // []) + ($item.required // []) + else . end + ) + else . end + ) + ) + ' | yq eval -P - > "$tmpfile" + fi + + # Replace original if different + if ! diff -q "$file" "$tmpfile" > /dev/null; then + cp "$tmpfile" "$file" + echo " ✅ File updated" + else + echo " ✓ No structural changes needed" + fi + + # Cleanup + rm "$tmpfile" + rm "${file}.bak" + + echo "" +} + +# Main execution +echo "" + +# Process JSON +if [ -f "./docs/swagger.json" ]; then + fix_file_inplace "./docs/swagger.json" +else + echo "âš ī¸ ./docs/swagger.json not found" +fi + +# Process YAML +if [ -f "./docs/swagger.yaml" ]; then + fix_file_inplace "./docs/swagger.yaml" +elif [ -f "./docs/swagger.yml" ]; then + fix_file_inplace "./docs/swagger.yml" +else + echo "âš ī¸ ./docs/swagger.yaml not found" +fi + +echo "" +echo "✨ Swagger 2.0 fixes complete!" +echo "" diff --git a/docs/swagger.json b/docs/swagger.json index 4564aa0b7f..17260c0dfe 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1,10618 +1,10635 @@ { - "schemes": [ - "https" - ], - "swagger": "2.0", - "info": { - "description": "Convoy is a fast and secure webhooks proxy. This document contains datastore.s API specification.", - "title": "Convoy API Reference", - "termsOfService": "https://getconvoy.io/terms", - "contact": { - "name": "Convoy Support", - "url": "https://getconvoy.io/docs", - "email": "support@getconvoy.io" - }, - "license": { - "name": "Mozilla Public License 2.0", - "url": "https://www.mozilla.org/en-US/MPL/2.0/" - }, - "version": "24.1.4" - }, - "host": "dashboard.getconvoy.io", - "basePath": "/api", - "paths": { - "/v1/projects/{projectID}/endpoints": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches an endpoints", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Endpoints" - ], - "summary": "List all endpoints", - "operationId": "GetEndpoints", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "enum": [ - "next", - "prev" - ], - "type": "string", - "x-enum-varnames": [ - "Next", - "Prev" - ], - "name": "direction", - "in": "query" - }, - { - "type": "string", - "example": "01H0JA5MEES38RRK3HTEJC647K", - "description": "A pagination cursor to fetch the next page of a list", - "name": "next_page_cursor", - "in": "query" - }, - { - "type": "string", - "example": "01H0JA5MEES38RRK3HTEJC647K", - "description": "The owner ID of the endpoint", - "name": "ownerId", - "in": "query" - }, - { - "type": "integer", - "example": 20, - "description": "The number of items to return per page", - "name": "perPage", - "in": "query" - }, - { - "type": "string", - "example": "01H0JATTVCXZK8FRDX1M1JN3QY", - "description": "A pagination cursor to fetch the previous page of a list", - "name": "prev_page_cursor", - "in": "query" - }, - { - "type": "string", - "example": "endpoint-1", - "description": "The name of the endpoint", - "name": "q", - "in": "query" - }, - { - "type": "string", - "example": "ASC | DESC", - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "name": "sort", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "allOf": [ - { - "$ref": "#/definitions/models.PagedResponse" - }, - { - "type": "object", - "properties": { - "content": { - "type": "array", - "items": { - "$ref": "#/definitions/models.EndpointResponse" - } - } - } - } - ] - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] + "schemes": [ + "https" + ], + "swagger": "2.0", + "info": { + "description": "Convoy is a fast and secure webhooks proxy. This document contains datastore.s API specification.", + "title": "Convoy API Reference", + "termsOfService": "https://getconvoy.io/terms", + "contact": { + "name": "Convoy Support", + "url": "https://getconvoy.io/docs", + "email": "support@getconvoy.io" + }, + "license": { + "name": "Mozilla Public License 2.0", + "url": "https://www.mozilla.org/en-US/MPL/2.0/" + }, + "version": "24.1.4" + }, + "host": "us.getconvoy.cloud", + "basePath": "/api", + "paths": { + "/v1/projects/{projectID}/endpoints": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches an endpoints", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Endpoints" + ], + "summary": "List all endpoints", + "operationId": "GetEndpoints", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "enum": [ + "next", + "prev" + ], + "type": "string", + "x-enum-varnames": [ + "Next", + "Prev" + ], + "name": "direction", + "in": "query" + }, + { + "type": "string", + "example": "01H0JA5MEES38RRK3HTEJC647K", + "description": "A pagination cursor to fetch the next page of a list", + "name": "next_page_cursor", + "in": "query" + }, + { + "type": "string", + "example": "01H0JA5MEES38RRK3HTEJC647K", + "description": "The owner ID of the endpoint", + "name": "ownerId", + "in": "query" + }, + { + "type": "integer", + "example": 20, + "description": "The number of items to return per page", + "name": "perPage", + "in": "query" + }, + { + "type": "string", + "example": "01H0JATTVCXZK8FRDX1M1JN3QY", + "description": "A pagination cursor to fetch the previous page of a list", + "name": "prev_page_cursor", + "in": "query" + }, + { + "type": "string", + "example": "endpoint-1", + "description": "The name of the endpoint", + "name": "q", + "in": "query" + }, + { + "type": "string", + "example": "ASC | DESC", + "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", + "name": "sort", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "allOf": [ + { + "$ref": "#/definitions/models.PagedResponse" + }, + { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/definitions/models.EndpointResponse" + } + } + } } + ] } + } } - }, - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint creates an endpoint", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Endpoints" - ], - "summary": "Create an endpoint", - "operationId": "CreateEndpoint", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Endpoint Details", - "name": "endpoint", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateEndpoint" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EndpointResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/endpoints/oauth2/test": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint tests the OAuth2 connection by attempting to exchange a token", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Endpoints" - ], - "summary": "Test OAuth2 connection", - "operationId": "TestOAuth2Connection", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "OAuth2 Configuration", - "name": "oauth2", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.TestOAuth2Request" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.TestOAuth2Response" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/endpoints/{endpointID}": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches an endpoint", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Endpoints" - ], - "summary": "Retrieve endpoint", - "operationId": "GetEndpoint", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Endpoint ID", - "name": "endpointID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EndpointResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] + } + } + } + }, + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint creates an endpoint", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Endpoints" + ], + "summary": "Create an endpoint", + "operationId": "CreateEndpoint", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Endpoint Details", + "name": "endpoint", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateEndpoint" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EndpointResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/endpoints/oauth2/test": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint tests the OAuth2 connection by attempting to exchange a token", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Endpoints" + ], + "summary": "Test OAuth2 connection", + "operationId": "TestOAuth2Connection", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "OAuth2 Configuration", + "name": "oauth2", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.TestOAuth2Request" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.TestOAuth2Response" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/endpoints/{endpointID}": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches an endpoint", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Endpoints" + ], + "summary": "Retrieve endpoint", + "operationId": "GetEndpoint", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Endpoint ID", + "name": "endpointID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EndpointResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + }, + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint updates an endpoint", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Endpoints" + ], + "summary": "Update an endpoint", + "operationId": "UpdateEndpoint", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Endpoint ID", + "name": "endpointID", + "in": "path", + "required": true + }, + { + "description": "Endpoint Details", + "name": "endpoint", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateEndpoint" + } + } + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EndpointResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + }, + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint deletes an endpoint", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Endpoints" + ], + "summary": "Delete endpoint", + "operationId": "DeleteEndpoint", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Endpoint ID", + "name": "endpointID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/endpoints/{endpointID}/activate": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "Activated an inactive endpoint", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Endpoints" + ], + "summary": "Activate endpoint", + "operationId": "ActivateEndpoint", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Endpoint ID", + "name": "endpointID", + "in": "path", + "required": true + } + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EndpointResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/endpoints/{endpointID}/expire_secret": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint expires and re-generates the endpoint secret.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Endpoints" + ], + "summary": "Roll endpoint secret", + "operationId": "ExpireSecret", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Endpoint ID", + "name": "endpointID", + "in": "path", + "required": true + }, + { + "description": "Expire Secret Body Parameters", + "name": "endpoint", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.ExpireSecret" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EndpointResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/endpoints/{endpointID}/pause": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "Toggles an endpoint's status between active and paused states", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Endpoints" + ], + "summary": "Pause endpoint", + "operationId": "PauseEndpoint", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Endpoint ID", + "name": "endpointID", + "in": "path", + "required": true + } + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EndpointResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/event-types": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches the project's event types", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "EventTypes" + ], + "summary": "Retrieves a project's event types", + "operationId": "GetEventTypes", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/models.EventTypeResponse" + } + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + }, + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint creates an event type", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "EventTypes" + ], + "summary": "Create an event type", + "operationId": "CreateEventType", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Event Type Details", + "name": "eventType", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateEventType" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EventTypeResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/event-types/import": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint imports event types from an OpenAPI specification", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "EventTypes" + ], + "summary": "Import event types from OpenAPI spec", + "operationId": "ImportOpenApiSpec", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "OpenAPI specification", + "name": "spec", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.ImportOpenAPISpec" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/models.EventTypeResponse" + } + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/event-types/{eventTypeId}": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint updates an event type", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "EventTypes" + ], + "summary": "Updates an event type", + "operationId": "UpdateEventType", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Event Type Details", + "name": "eventType", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateEventType" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EventTypeResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/event-types/{eventTypeId}/deprecate": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint deprecates an event type", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "EventTypes" + ], + "summary": "Deprecates an event type", + "operationId": "DeprecateEventType", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Event Type ID", + "name": "eventTypeId", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EventTypeResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/eventdeliveries": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint retrieves all event deliveries paginated.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Event Deliveries" + ], + "summary": "List all event deliveries", + "operationId": "GetEventDeliveriesPaged", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "enum": [ + "next", + "prev" + ], + "type": "string", + "x-enum-varnames": [ + "Next", + "Prev" + ], + "name": "direction", + "in": "query" + }, + { + "type": "string", + "example": "2008-05-02T15:04:05", + "description": "The end date", + "name": "endDate", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string" }, - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint updates an endpoint", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Endpoints" - ], - "summary": "Update an endpoint", - "operationId": "UpdateEndpoint", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Endpoint ID", - "name": "endpointID", - "in": "path", - "required": true - }, - { - "description": "Endpoint Details", - "name": "endpoint", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateEndpoint" - } - } - ], - "responses": { - "202": { - "description": "Accepted", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EndpointResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } + "collectionFormat": "csv", + "description": "A list of endpoint IDs to filter by", + "name": "endpointId", + "in": "query" + }, + { + "type": "string", + "description": "Event ID to filter by", + "name": "eventId", + "in": "query" + }, + { + "type": "string", + "description": "EventType to filter by", + "name": "event_type", + "in": "query" + }, + { + "type": "string", + "description": "IdempotencyKey to filter by", + "name": "idempotencyKey", + "in": "query" + }, + { + "type": "string", + "example": "01H0JA5MEES38RRK3HTEJC647K", + "description": "A pagination cursor to fetch the next page of a list", + "name": "next_page_cursor", + "in": "query" + }, + { + "type": "integer", + "example": 20, + "description": "The number of items to return per page", + "name": "perPage", + "in": "query" + }, + { + "type": "string", + "example": "01H0JATTVCXZK8FRDX1M1JN3QY", + "description": "A pagination cursor to fetch the previous page of a list", + "name": "prev_page_cursor", + "in": "query" + }, + { + "type": "string", + "example": "ASC | DESC", + "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", + "name": "sort", + "in": "query" + }, + { + "type": "string", + "example": "2006-01-02T15:04:05", + "description": "The start date", + "name": "startDate", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string" }, - "delete": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint deletes an endpoint", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Endpoints" - ], - "summary": "Delete endpoint", - "operationId": "DeleteEndpoint", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Endpoint ID", - "name": "endpointID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] + "collectionFormat": "csv", + "description": "A list of event delivery statuses to filter by", + "name": "status", + "in": "query" + }, + { + "type": "string", + "description": "SubscriptionID to filter by", + "name": "subscriptionId", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "allOf": [ + { + "$ref": "#/definitions/models.PagedResponse" + }, + { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/definitions/models.EventDeliveryResponse" + } + } + } } + ] } + } } + ] } - }, - "/v1/projects/{projectID}/endpoints/{endpointID}/activate": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "Activated an inactive endpoint", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Endpoints" - ], - "summary": "Activate endpoint", - "operationId": "ActivateEndpoint", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Endpoint ID", - "name": "endpointID", - "in": "path", - "required": true - } - ], - "responses": { - "202": { - "description": "Accepted", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EndpointResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/endpoints/{endpointID}/expire_secret": { - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint expires and re-generates the endpoint secret.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Endpoints" - ], - "summary": "Roll endpoint secret", - "operationId": "ExpireSecret", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Endpoint ID", - "name": "endpointID", - "in": "path", - "required": true - }, - { - "description": "Expire Secret Body Parameters", - "name": "endpoint", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.ExpireSecret" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EndpointResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/endpoints/{endpointID}/pause": { - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "Toggles an endpoint's status between active and paused states", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Endpoints" - ], - "summary": "Pause endpoint", - "operationId": "PauseEndpoint", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Endpoint ID", - "name": "endpointID", - "in": "path", - "required": true - } - ], - "responses": { - "202": { - "description": "Accepted", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EndpointResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/event-types": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches the project's event types", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "EventTypes" - ], - "summary": "Retrieves a project's event types", - "operationId": "GetEventTypes", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/models.EventTypeResponse" - } - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } + } + } + } + }, + "/v1/projects/{projectID}/eventdeliveries/batchretry": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint batch retries multiple event deliveries at once.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Event Deliveries" + ], + "summary": "Batch retry event delivery", + "operationId": "BatchRetryEventDelivery", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "enum": [ + "next", + "prev" + ], + "type": "string", + "x-enum-varnames": [ + "Next", + "Prev" + ], + "name": "direction", + "in": "query" + }, + { + "type": "string", + "example": "2008-05-02T15:04:05", + "description": "The end date", + "name": "endDate", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string" }, - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint creates an event type", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "EventTypes" - ], - "summary": "Create an event type", - "operationId": "CreateEventType", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Event Type Details", - "name": "eventType", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateEventType" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EventTypeResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } - }, - "/v1/projects/{projectID}/event-types/import": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint imports event types from an OpenAPI specification", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "EventTypes" - ], - "summary": "Import event types from OpenAPI spec", - "operationId": "ImportOpenApiSpec", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "OpenAPI specification", - "name": "spec", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.ImportOpenAPISpec" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/models.EventTypeResponse" - } - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } - }, - "/v1/projects/{projectID}/event-types/{eventTypeId}": { - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint updates an event type", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "EventTypes" - ], - "summary": "Updates an event type", - "operationId": "UpdateEventType", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Event Type Details", - "name": "eventType", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateEventType" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EventTypeResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] + "collectionFormat": "csv", + "description": "A list of endpoint IDs to filter by", + "name": "endpointId", + "in": "query" + }, + { + "type": "string", + "description": "Event ID to filter by", + "name": "eventId", + "in": "query" + }, + { + "type": "string", + "description": "EventType to filter by", + "name": "event_type", + "in": "query" + }, + { + "type": "string", + "description": "IdempotencyKey to filter by", + "name": "idempotencyKey", + "in": "query" + }, + { + "type": "string", + "example": "01H0JA5MEES38RRK3HTEJC647K", + "description": "A pagination cursor to fetch the next page of a list", + "name": "next_page_cursor", + "in": "query" + }, + { + "type": "integer", + "example": 20, + "description": "The number of items to return per page", + "name": "perPage", + "in": "query" + }, + { + "type": "string", + "example": "01H0JATTVCXZK8FRDX1M1JN3QY", + "description": "A pagination cursor to fetch the previous page of a list", + "name": "prev_page_cursor", + "in": "query" + }, + { + "type": "string", + "example": "ASC | DESC", + "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", + "name": "sort", + "in": "query" + }, + { + "type": "string", + "example": "2006-01-02T15:04:05", + "description": "The start date", + "name": "startDate", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv", + "description": "A list of event delivery statuses to filter by", + "name": "status", + "in": "query" + }, + { + "type": "string", + "description": "SubscriptionID to filter by", + "name": "subscriptionId", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/eventdeliveries/forceresend": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint enables you retry a previously successful event delivery", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Event Deliveries" + ], + "summary": "Force retry event delivery", + "operationId": "ForceResendEventDeliveries", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "event delivery ids", + "name": "deliveryIds", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.IDs" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches an event delivery.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Event Deliveries" + ], + "summary": "Retrieve an event delivery", + "operationId": "GetEventDelivery", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "event delivery id", + "name": "eventDeliveryID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EventDeliveryResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches an app message's delivery attempts", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Delivery Attempts" + ], + "summary": "List delivery attempts", + "operationId": "GetDeliveryAttempts", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "event delivery id", + "name": "eventDeliveryID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/datastore.DeliveryAttempt" + } + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts/{deliveryAttemptID}": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches an app event delivery attempt", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Delivery Attempts" + ], + "summary": "Retrieve a delivery attempt", + "operationId": "GetDeliveryAttempt", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "event delivery id", + "name": "eventDeliveryID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "delivery attempt id", + "name": "deliveryAttemptID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/datastore.DeliveryAttempt" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/resend": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint retries an event delivery.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Event Deliveries" + ], + "summary": "Retry event delivery", + "operationId": "ResendEventDelivery", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "event delivery id", + "name": "eventDeliveryID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EventDeliveryResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/events": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches app events with pagination", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Events" + ], + "summary": "List all events", + "operationId": "GetEventsPaged", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "enum": [ + "next", + "prev" + ], + "type": "string", + "x-enum-varnames": [ + "Next", + "Prev" + ], + "name": "direction", + "in": "query" + }, + { + "type": "string", + "example": "2008-05-02T15:04:05", + "description": "The end date", + "name": "endDate", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv", + "description": "A list of endpoint ids to filter by", + "name": "endpointId", + "in": "query" + }, + { + "type": "string", + "description": "IdempotencyKey to filter by", + "name": "idempotencyKey", + "in": "query" + }, + { + "type": "string", + "example": "01H0JA5MEES38RRK3HTEJC647K", + "description": "A pagination cursor to fetch the next page of a list", + "name": "next_page_cursor", + "in": "query" + }, + { + "type": "integer", + "example": 20, + "description": "The number of items to return per page", + "name": "perPage", + "in": "query" + }, + { + "type": "string", + "example": "01H0JATTVCXZK8FRDX1M1JN3QY", + "description": "A pagination cursor to fetch the previous page of a list", + "name": "prev_page_cursor", + "in": "query" + }, + { + "type": "string", + "description": "Any arbitrary value to filter the events payload", + "name": "query", + "in": "query" + }, + { + "type": "string", + "example": "ASC | DESC", + "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", + "name": "sort", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv", + "description": "A list of Source IDs to filter the events by.", + "name": "sourceId", + "in": "query" + }, + { + "type": "string", + "example": "2006-01-02T15:04:05", + "description": "The start date", + "name": "startDate", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "allOf": [ + { + "$ref": "#/definitions/models.PagedResponse" + }, + { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/definitions/models.EventResponse" + } + } + } } + ] } + } } + ] } - }, - "/v1/projects/{projectID}/event-types/{eventTypeId}/deprecate": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint deprecates an event type", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "EventTypes" - ], - "summary": "Deprecates an event type", - "operationId": "DeprecateEventType", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Event Type ID", - "name": "eventTypeId", - "in": "path", - "required": true - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EventTypeResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/eventdeliveries": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint retrieves all event deliveries paginated.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Event Deliveries" - ], - "summary": "List all event deliveries", - "operationId": "GetEventDeliveriesPaged", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "enum": [ - "next", - "prev" - ], - "type": "string", - "x-enum-varnames": [ - "Next", - "Prev" - ], - "name": "direction", - "in": "query" - }, - { - "type": "string", - "example": "2008-05-02T15:04:05", - "description": "The end date", - "name": "endDate", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "A list of endpoint IDs to filter by", - "name": "endpointId", - "in": "query" - }, - { - "type": "string", - "description": "Event ID to filter by", - "name": "eventId", - "in": "query" - }, - { - "type": "string", - "description": "EventType to filter by", - "name": "event_type", - "in": "query" - }, - { - "type": "string", - "description": "IdempotencyKey to filter by", - "name": "idempotencyKey", - "in": "query" - }, - { - "type": "string", - "example": "01H0JA5MEES38RRK3HTEJC647K", - "description": "A pagination cursor to fetch the next page of a list", - "name": "next_page_cursor", - "in": "query" - }, - { - "type": "integer", - "example": 20, - "description": "The number of items to return per page", - "name": "perPage", - "in": "query" - }, - { - "type": "string", - "example": "01H0JATTVCXZK8FRDX1M1JN3QY", - "description": "A pagination cursor to fetch the previous page of a list", - "name": "prev_page_cursor", - "in": "query" - }, - { - "type": "string", - "example": "ASC | DESC", - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "name": "sort", - "in": "query" - }, - { - "type": "string", - "example": "2006-01-02T15:04:05", - "description": "The start date", - "name": "startDate", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "A list of event delivery statuses to filter by", - "name": "status", - "in": "query" - }, - { - "type": "string", - "description": "SubscriptionID to filter by", - "name": "subscriptionId", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "allOf": [ - { - "$ref": "#/definitions/models.PagedResponse" - }, - { - "type": "object", - "properties": { - "content": { - "type": "array", - "items": { - "$ref": "#/definitions/models.EventDeliveryResponse" - } - } - } - } - ] - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/eventdeliveries/batchretry": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint batch retries multiple event deliveries at once.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Event Deliveries" - ], - "summary": "Batch retry event delivery", - "operationId": "BatchRetryEventDelivery", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "enum": [ - "next", - "prev" - ], - "type": "string", - "x-enum-varnames": [ - "Next", - "Prev" - ], - "name": "direction", - "in": "query" - }, - { - "type": "string", - "example": "2008-05-02T15:04:05", - "description": "The end date", - "name": "endDate", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "A list of endpoint IDs to filter by", - "name": "endpointId", - "in": "query" - }, - { - "type": "string", - "description": "Event ID to filter by", - "name": "eventId", - "in": "query" - }, - { - "type": "string", - "description": "EventType to filter by", - "name": "event_type", - "in": "query" - }, - { - "type": "string", - "description": "IdempotencyKey to filter by", - "name": "idempotencyKey", - "in": "query" - }, - { - "type": "string", - "example": "01H0JA5MEES38RRK3HTEJC647K", - "description": "A pagination cursor to fetch the next page of a list", - "name": "next_page_cursor", - "in": "query" - }, - { - "type": "integer", - "example": 20, - "description": "The number of items to return per page", - "name": "perPage", - "in": "query" - }, - { - "type": "string", - "example": "01H0JATTVCXZK8FRDX1M1JN3QY", - "description": "A pagination cursor to fetch the previous page of a list", - "name": "prev_page_cursor", - "in": "query" - }, - { - "type": "string", - "example": "ASC | DESC", - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "name": "sort", - "in": "query" - }, - { - "type": "string", - "example": "2006-01-02T15:04:05", - "description": "The start date", - "name": "startDate", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "A list of event delivery statuses to filter by", - "name": "status", - "in": "query" - }, - { - "type": "string", - "description": "SubscriptionID to filter by", - "name": "subscriptionId", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/eventdeliveries/forceresend": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint enables you retry a previously successful event delivery", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Event Deliveries" - ], - "summary": "Force retry event delivery", - "operationId": "ForceResendEventDeliveries", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "event delivery ids", - "name": "deliveryIds", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.IDs" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } - }, - "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches an event delivery.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Event Deliveries" - ], - "summary": "Retrieve an event delivery", - "operationId": "GetEventDelivery", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "event delivery id", - "name": "eventDeliveryID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EventDeliveryResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] + } + } + }, + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint creates an endpoint event", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Events" + ], + "summary": "Create an event", + "operationId": "CreateEndpointEvent", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Event Details", + "name": "event", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateEvent" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/events/batchreplay": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint replays multiple events at once.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Events" + ], + "summary": "Batch replay events", + "operationId": "BatchReplayEvents", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "enum": [ + "next", + "prev" + ], + "type": "string", + "x-enum-varnames": [ + "Next", + "Prev" + ], + "name": "direction", + "in": "query" + }, + { + "type": "string", + "example": "2008-05-02T15:04:05", + "description": "The end date", + "name": "endDate", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv", + "description": "A list of endpoint ids to filter by", + "name": "endpointId", + "in": "query" + }, + { + "type": "string", + "description": "IdempotencyKey to filter by", + "name": "idempotencyKey", + "in": "query" + }, + { + "type": "string", + "example": "01H0JA5MEES38RRK3HTEJC647K", + "description": "A pagination cursor to fetch the next page of a list", + "name": "next_page_cursor", + "in": "query" + }, + { + "type": "integer", + "example": 20, + "description": "The number of items to return per page", + "name": "perPage", + "in": "query" + }, + { + "type": "string", + "example": "01H0JATTVCXZK8FRDX1M1JN3QY", + "description": "A pagination cursor to fetch the previous page of a list", + "name": "prev_page_cursor", + "in": "query" + }, + { + "type": "string", + "description": "Any arbitrary value to filter the events payload", + "name": "query", + "in": "query" + }, + { + "type": "string", + "example": "ASC | DESC", + "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", + "name": "sort", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv", + "description": "A list of Source IDs to filter the events by.", + "name": "sourceId", + "in": "query" + }, + { + "type": "string", + "example": "2006-01-02T15:04:05", + "description": "The start date", + "name": "startDate", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/events/broadcast": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint creates a event that is broadcast to every endpoint whose subscription matches the given event type.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Events" + ], + "summary": "Create a broadcast event", + "operationId": "CreateBroadcastEvent", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Broadcast Event Details", + "name": "event", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.BroadcastEvent" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EventResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/events/dynamic": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "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", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Events" + ], + "summary": "Dynamic Events", + "operationId": "CreateDynamicEvent", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Event Details", + "name": "event", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.DynamicEvent" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/handlers.Stub" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/events/fanout": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint uses the owner_id to fan out an event to multiple endpoints.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Events" + ], + "summary": "Fan out an event", + "operationId": "CreateEndpointFanoutEvent", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Event Details", + "name": "event", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.FanoutEvent" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/events/{eventID}": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint retrieves an event", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Events" + ], + "summary": "Retrieve an event", + "operationId": "GetEndpointEvent", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "event id", + "name": "eventID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EventResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/events/{eventID}/replay": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint replays an event afresh assuming it is a new event.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Events" + ], + "summary": "Replay event", + "operationId": "ReplayEndpointEvent", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "event id", + "name": "eventID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.EventResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/meta-events": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches meta events with pagination", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Meta Events" + ], + "summary": "List all meta events", + "operationId": "GetMetaEventsPaged", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "enum": [ + "next", + "prev" + ], + "type": "string", + "x-enum-varnames": [ + "Next", + "Prev" + ], + "name": "direction", + "in": "query" + }, + { + "type": "string", + "example": "2008-05-02T15:04:05", + "description": "The end date", + "name": "endDate", + "in": "query" + }, + { + "type": "string", + "example": "01H0JA5MEES38RRK3HTEJC647K", + "description": "A pagination cursor to fetch the next page of a list", + "name": "next_page_cursor", + "in": "query" + }, + { + "type": "integer", + "example": 20, + "description": "The number of items to return per page", + "name": "perPage", + "in": "query" + }, + { + "type": "string", + "example": "01H0JATTVCXZK8FRDX1M1JN3QY", + "description": "A pagination cursor to fetch the previous page of a list", + "name": "prev_page_cursor", + "in": "query" + }, + { + "type": "string", + "example": "ASC | DESC", + "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", + "name": "sort", + "in": "query" + }, + { + "type": "string", + "example": "2006-01-02T15:04:05", + "description": "The start date", + "name": "startDate", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "allOf": [ + { + "$ref": "#/definitions/models.PagedResponse" + }, + { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/definitions/models.MetaEventResponse" + } + } + } } + ] } + } } + ] } - }, - "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches an app message's delivery attempts", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Delivery Attempts" - ], - "summary": "List delivery attempts", - "operationId": "GetDeliveryAttempts", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "event delivery id", - "name": "eventDeliveryID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/datastore.DeliveryAttempt" - } - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts/{deliveryAttemptID}": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches an app event delivery attempt", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Delivery Attempts" - ], - "summary": "Retrieve a delivery attempt", - "operationId": "GetDeliveryAttempt", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "event delivery id", - "name": "eventDeliveryID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "delivery attempt id", - "name": "deliveryAttemptID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/datastore.DeliveryAttempt" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/resend": { - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint retries an event delivery.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Event Deliveries" - ], - "summary": "Retry event delivery", - "operationId": "ResendEventDelivery", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "event delivery id", - "name": "eventDeliveryID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EventDeliveryResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/events": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches app events with pagination", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Events" - ], - "summary": "List all events", - "operationId": "GetEventsPaged", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "enum": [ - "next", - "prev" - ], - "type": "string", - "x-enum-varnames": [ - "Next", - "Prev" - ], - "name": "direction", - "in": "query" - }, - { - "type": "string", - "example": "2008-05-02T15:04:05", - "description": "The end date", - "name": "endDate", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "A list of endpoint ids to filter by", - "name": "endpointId", - "in": "query" - }, - { - "type": "string", - "description": "IdempotencyKey to filter by", - "name": "idempotencyKey", - "in": "query" - }, - { - "type": "string", - "example": "01H0JA5MEES38RRK3HTEJC647K", - "description": "A pagination cursor to fetch the next page of a list", - "name": "next_page_cursor", - "in": "query" - }, - { - "type": "integer", - "example": 20, - "description": "The number of items to return per page", - "name": "perPage", - "in": "query" - }, - { - "type": "string", - "example": "01H0JATTVCXZK8FRDX1M1JN3QY", - "description": "A pagination cursor to fetch the previous page of a list", - "name": "prev_page_cursor", - "in": "query" - }, - { - "type": "string", - "description": "Any arbitrary value to filter the events payload", - "name": "query", - "in": "query" - }, - { - "type": "string", - "example": "ASC | DESC", - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "name": "sort", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" + } + } + } + }, + "/v1/projects/{projectID}/meta-events/{metaEventID}": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint retrieves a meta event", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Meta Events" + ], + "summary": "Retrieve a meta event", + "operationId": "GetMetaEvent", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "meta event id", + "name": "metaEventID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.MetaEventResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/meta-events/{metaEventID}/resend": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint retries a meta event", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Meta Events" + ], + "summary": "Retry meta event", + "operationId": "ResendMetaEvent", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "meta event id", + "name": "metaEventID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.MetaEventResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/onboard": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint accepts a CSV file or JSON body to bulk-create endpoints with subscriptions", + "consumes": [ + "application/json", + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Onboard" + ], + "summary": "Bulk onboard endpoints with subscriptions", + "operationId": "BulkOnboard", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "boolean", + "description": "Validate without creating", + "name": "dry_run", + "in": "query" + }, + { + "description": "Onboard Details (JSON)", + "name": "onboard", + "in": "body", + "schema": { + "$ref": "#/definitions/models.BulkOnboardRequest" + } + }, + { + "type": "file", + "description": "CSV file upload", + "name": "file", + "in": "formData" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.BulkOnboardDryRunResponse" + } + } + } + ] + } + }, + "202": { + "description": "Accepted", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.BulkOnboardAcceptedResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/portal-links": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches multiple portal links", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Portal Links" + ], + "summary": "List all portal links", + "operationId": "LoadPortalLinksPaged", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "enum": [ + "next", + "prev" + ], + "type": "string", + "x-enum-varnames": [ + "Next", + "Prev" + ], + "name": "direction", + "in": "query" + }, + { + "type": "string", + "example": "01H0JA5MEES38RRK3HTEJC647K", + "description": "A pagination cursor to fetch the next page of a list", + "name": "next_page_cursor", + "in": "query" + }, + { + "type": "string", + "example": "01H0JA5MEES38RRK3HTEJC647K", + "description": "The owner ID of the endpoint", + "name": "ownerId", + "in": "query" + }, + { + "type": "integer", + "example": 20, + "description": "The number of items to return per page", + "name": "perPage", + "in": "query" + }, + { + "type": "string", + "example": "01H0JATTVCXZK8FRDX1M1JN3QY", + "description": "A pagination cursor to fetch the previous page of a list", + "name": "prev_page_cursor", + "in": "query" + }, + { + "type": "string", + "example": "endpoint-1", + "description": "The name of the endpoint", + "name": "q", + "in": "query" + }, + { + "type": "string", + "example": "ASC | DESC", + "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", + "name": "sort", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "allOf": [ + { + "$ref": "#/definitions/models.PagedResponse" }, - "collectionFormat": "csv", - "description": "A list of Source IDs to filter the events by.", - "name": "sourceId", - "in": "query" - }, - { - "type": "string", - "example": "2006-01-02T15:04:05", - "description": "The start date", - "name": "startDate", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "allOf": [ - { - "$ref": "#/definitions/models.PagedResponse" - }, - { - "type": "object", - "properties": { - "content": { - "type": "array", - "items": { - "$ref": "#/definitions/models.EventResponse" - } - } - } - } - ] - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] + { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/definitions/datastore.PortalLinkResponse" + } + } + } } + ] } + } } - }, - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint creates an endpoint event", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Events" - ], - "summary": "Create an event", - "operationId": "CreateEndpointEvent", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Event Details", - "name": "event", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateEvent" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/events/batchreplay": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint replays multiple events at once.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Events" - ], - "summary": "Batch replay events", - "operationId": "BatchReplayEvents", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "enum": [ - "next", - "prev" - ], - "type": "string", - "x-enum-varnames": [ - "Next", - "Prev" - ], - "name": "direction", - "in": "query" - }, - { - "type": "string", - "example": "2008-05-02T15:04:05", - "description": "The end date", - "name": "endDate", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "A list of endpoint ids to filter by", - "name": "endpointId", - "in": "query" - }, - { - "type": "string", - "description": "IdempotencyKey to filter by", - "name": "idempotencyKey", - "in": "query" - }, - { - "type": "string", - "example": "01H0JA5MEES38RRK3HTEJC647K", - "description": "A pagination cursor to fetch the next page of a list", - "name": "next_page_cursor", - "in": "query" - }, - { - "type": "integer", - "example": 20, - "description": "The number of items to return per page", - "name": "perPage", - "in": "query" - }, - { - "type": "string", - "example": "01H0JATTVCXZK8FRDX1M1JN3QY", - "description": "A pagination cursor to fetch the previous page of a list", - "name": "prev_page_cursor", - "in": "query" - }, - { - "type": "string", - "description": "Any arbitrary value to filter the events payload", - "name": "query", - "in": "query" - }, - { - "type": "string", - "example": "ASC | DESC", - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "name": "sort", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "A list of Source IDs to filter the events by.", - "name": "sourceId", - "in": "query" - }, - { - "type": "string", - "example": "2006-01-02T15:04:05", - "description": "The start date", - "name": "startDate", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "type": "string" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/events/broadcast": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint creates a event that is broadcast to every endpoint whose subscription matches the given event type.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Events" - ], - "summary": "Create a broadcast event", - "operationId": "CreateBroadcastEvent", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Broadcast Event Details", - "name": "event", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.BroadcastEvent" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EventResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/events/dynamic": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "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", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Events" - ], - "summary": "Dynamic Events", - "operationId": "CreateDynamicEvent", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Event Details", - "name": "event", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.DynamicEvent" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/handlers.Stub" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] + } + } + }, + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint creates a portal link", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Portal Links" + ], + "summary": "Create a portal link", + "operationId": "CreatePortalLink", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Portal Link Details", + "name": "portallink", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/datastore.CreatePortalLinkRequest" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/datastore.PortalLinkResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/portal-links/{portalLinkID}": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint retrieves a portal link by its id.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Portal Links" + ], + "summary": "Retrieve a portal link", + "operationId": "GetPortalLink", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "portal link id", + "name": "portalLinkID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/datastore.PortalLinkResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + }, + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint updates a portal link", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Portal Links" + ], + "summary": "Update a portal link", + "operationId": "UpdatePortalLink", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "portal link id", + "name": "portalLinkID", + "in": "path", + "required": true + }, + { + "description": "Portal Link Details", + "name": "portallink", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/datastore.UpdatePortalLinkRequest" + } + } + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/datastore.PortalLinkResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/portal-links/{portalLinkID}/refresh_token": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint retrieves a portal link auth token", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Portal Links" + ], + "summary": "Get a portal link auth token", + "operationId": "RefreshPortalLinkAuthToken", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "portal link id", + "name": "portalLinkID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/portal-links/{portalLinkID}/revoke": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint revokes a portal link", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Portal Links" + ], + "summary": "Revoke a portal link", + "operationId": "RevokePortalLink", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "portal link id", + "name": "portalLinkID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/sources": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches multiple sources", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Sources" + ], + "summary": "List all sources", + "operationId": "LoadSourcesPaged", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "enum": [ + "next", + "prev" + ], + "type": "string", + "x-enum-varnames": [ + "Next", + "Prev" + ], + "name": "direction", + "in": "query" + }, + { + "type": "string", + "example": "01H0JA5MEES38RRK3HTEJC647K", + "description": "A pagination cursor to fetch the next page of a list", + "name": "next_page_cursor", + "in": "query" + }, + { + "type": "integer", + "example": 20, + "description": "The number of items to return per page", + "name": "perPage", + "in": "query" + }, + { + "type": "string", + "example": "01H0JATTVCXZK8FRDX1M1JN3QY", + "description": "A pagination cursor to fetch the previous page of a list", + "name": "prev_page_cursor", + "in": "query" + }, + { + "type": "string", + "example": "twitter", + "description": "The custom source provider e.g. twitter, shopify", + "name": "provider", + "in": "query" + }, + { + "type": "string", + "example": "ASC | DESC", + "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", + "name": "sort", + "in": "query" + }, + { + "type": "string", + "example": "http", + "description": "The source type e.g. http, pub_sub", + "name": "type", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "allOf": [ + { + "$ref": "#/definitions/models.PagedResponse" + }, + { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/definitions/models.SourceResponse" + } + } + } } + ] } + } } + ] } - }, - "/v1/projects/{projectID}/events/fanout": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint uses the owner_id to fan out an event to multiple endpoints.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Events" - ], - "summary": "Fan out an event", - "operationId": "CreateEndpointFanoutEvent", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Event Details", - "name": "event", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.FanoutEvent" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/events/{eventID}": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint retrieves an event", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Events" - ], - "summary": "Retrieve an event", - "operationId": "GetEndpointEvent", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "event id", - "name": "eventID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EventResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/events/{eventID}/replay": { - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint replays an event afresh assuming it is a new event.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Events" - ], - "summary": "Replay event", - "operationId": "ReplayEndpointEvent", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "event id", - "name": "eventID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.EventResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/meta-events": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches meta events with pagination", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Meta Events" - ], - "summary": "List all meta events", - "operationId": "GetMetaEventsPaged", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "enum": [ - "next", - "prev" - ], - "type": "string", - "x-enum-varnames": [ - "Next", - "Prev" - ], - "name": "direction", - "in": "query" - }, - { - "type": "string", - "example": "2008-05-02T15:04:05", - "description": "The end date", - "name": "endDate", - "in": "query" - }, - { - "type": "string", - "example": "01H0JA5MEES38RRK3HTEJC647K", - "description": "A pagination cursor to fetch the next page of a list", - "name": "next_page_cursor", - "in": "query" - }, - { - "type": "integer", - "example": 20, - "description": "The number of items to return per page", - "name": "perPage", - "in": "query" - }, - { - "type": "string", - "example": "01H0JATTVCXZK8FRDX1M1JN3QY", - "description": "A pagination cursor to fetch the previous page of a list", - "name": "prev_page_cursor", - "in": "query" - }, - { - "type": "string", - "example": "ASC | DESC", - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "name": "sort", - "in": "query" - }, - { - "type": "string", - "example": "2006-01-02T15:04:05", - "description": "The start date", - "name": "startDate", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "allOf": [ - { - "$ref": "#/definitions/models.PagedResponse" - }, - { - "type": "object", - "properties": { - "content": { - "type": "array", - "items": { - "$ref": "#/definitions/models.MetaEventResponse" - } - } - } - } - ] - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] + } + } + }, + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint creates a source", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Sources" + ], + "summary": "Create a source", + "operationId": "CreateSource", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Source Details", + "name": "source", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateSource" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.SourceResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/sources/test_function": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint validates that a filter will match a certain payload structure.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Subscriptions" + ], + "summary": "Validate source function", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Function Details", + "name": "filter", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.FunctionRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.FunctionResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/sources/{sourceID}": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint retrieves a source by its id", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Sources" + ], + "summary": "Retrieve a source", + "operationId": "GetSource", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Source ID", + "name": "sourceID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.SourceResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + }, + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint updates a source", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Sources" + ], + "summary": "Update a source", + "operationId": "UpdateSource", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "source id", + "name": "sourceID", + "in": "path", + "required": true + }, + { + "description": "Source Details", + "name": "source", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateSource" + } + } + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.SourceResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + }, + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint deletes a source", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Sources" + ], + "summary": "Delete a source", + "operationId": "DeleteSource", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "source id", + "name": "sourceID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/subscriptions": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches all the subscriptions", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Subscriptions" + ], + "summary": "List all subscriptions", + "operationId": "GetSubscriptions", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "enum": [ + "next", + "prev" + ], + "type": "string", + "x-enum-varnames": [ + "Next", + "Prev" + ], + "name": "direction", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv", + "description": "A list of endpointIDs to filter by", + "name": "endpointId", + "in": "query" + }, + { + "type": "string", + "description": "Subscription name to filter by", + "name": "name", + "in": "query" + }, + { + "type": "string", + "example": "01H0JA5MEES38RRK3HTEJC647K", + "description": "A pagination cursor to fetch the next page of a list", + "name": "next_page_cursor", + "in": "query" + }, + { + "type": "integer", + "example": 20, + "description": "The number of items to return per page", + "name": "perPage", + "in": "query" + }, + { + "type": "string", + "example": "01H0JATTVCXZK8FRDX1M1JN3QY", + "description": "A pagination cursor to fetch the previous page of a list", + "name": "prev_page_cursor", + "in": "query" + }, + { + "type": "string", + "example": "ASC | DESC", + "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", + "name": "sort", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "allOf": [ + { + "$ref": "#/definitions/models.PagedResponse" + }, + { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/definitions/models.SubscriptionResponse" + } + } + } } + ] } + } } + ] } - }, - "/v1/projects/{projectID}/meta-events/{metaEventID}": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint retrieves a meta event", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Meta Events" - ], - "summary": "Retrieve a meta event", - "operationId": "GetMetaEvent", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "meta event id", - "name": "metaEventID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.MetaEventResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/meta-events/{metaEventID}/resend": { - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint retries a meta event", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Meta Events" - ], - "summary": "Retry meta event", - "operationId": "ResendMetaEvent", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "meta event id", - "name": "metaEventID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.MetaEventResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/onboard": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint accepts a CSV file or JSON body to bulk-create endpoints with subscriptions", - "consumes": [ - "application/json", - "multipart/form-data" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Onboard" - ], - "summary": "Bulk onboard endpoints with subscriptions", - "operationId": "BulkOnboard", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "boolean", - "description": "Validate without creating", - "name": "dry_run", - "in": "query" - }, - { - "description": "Onboard Details (JSON)", - "name": "onboard", - "in": "body", - "schema": { - "$ref": "#/definitions/models.BulkOnboardRequest" - } - }, - { - "type": "file", - "description": "CSV file upload", - "name": "file", - "in": "formData" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.BulkOnboardDryRunResponse" - } - } - } - ] - } - }, - "202": { - "description": "Accepted", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.BulkOnboardAcceptedResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" } + } } + ] } - }, - "/v1/projects/{projectID}/portal-links": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches multiple portal links", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Portal Links" - ], - "summary": "List all portal links", - "operationId": "LoadPortalLinksPaged", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "enum": [ - "next", - "prev" - ], - "type": "string", - "x-enum-varnames": [ - "Next", - "Prev" - ], - "name": "direction", - "in": "query" - }, - { - "type": "string", - "example": "01H0JA5MEES38RRK3HTEJC647K", - "description": "A pagination cursor to fetch the next page of a list", - "name": "next_page_cursor", - "in": "query" - }, - { - "type": "string", - "example": "01H0JA5MEES38RRK3HTEJC647K", - "description": "The owner ID of the endpoint", - "name": "ownerId", - "in": "query" - }, - { - "type": "integer", - "example": 20, - "description": "The number of items to return per page", - "name": "perPage", - "in": "query" - }, - { - "type": "string", - "example": "01H0JATTVCXZK8FRDX1M1JN3QY", - "description": "A pagination cursor to fetch the previous page of a list", - "name": "prev_page_cursor", - "in": "query" - }, - { - "type": "string", - "example": "endpoint-1", - "description": "The name of the endpoint", - "name": "q", - "in": "query" - }, - { - "type": "string", - "example": "ASC | DESC", - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "name": "sort", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "allOf": [ - { - "$ref": "#/definitions/models.PagedResponse" - }, - { - "type": "object", - "properties": { - "content": { - "type": "array", - "items": { - "$ref": "#/definitions/datastore.PortalLinkResponse" - } - } - } - } - ] - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - }, - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint creates a portal link", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Portal Links" - ], - "summary": "Create a portal link", - "operationId": "CreatePortalLink", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Portal Link Details", - "name": "portallink", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/datastore.CreatePortalLinkRequest" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/datastore.PortalLinkResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } + } + } + }, + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint creates a subscriptions", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Subscriptions" + ], + "summary": "Create a subscription", + "operationId": "CreateSubscription", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Subscription details", + "name": "subscription", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateSubscription" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.SubscriptionResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/subscriptions/test_filter": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint validates that a filter will match a certain payload structure.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Subscriptions" + ], + "summary": "Validate subscription filter", + "operationId": "TestSubscriptionFilter", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Filter Details", + "name": "filter", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.TestFilter" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "boolean" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/subscriptions/test_function": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint test runs a transform function against a payload.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Subscriptions" + ], + "summary": "Test a subscription function", + "operationId": "TestSubscriptionFunction", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "description": "Function Details", + "name": "filter", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.FunctionRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.FunctionResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/subscriptions/{subscriptionID}": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint retrieves a single subscription", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Subscriptions" + ], + "summary": "Retrieve a subscription", + "operationId": "GetSubscription", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "subscription id", + "name": "subscriptionID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.SubscriptionResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + }, + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint updates a subscription", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Subscriptions" + ], + "summary": "Update a subscription", + "operationId": "UpdateSubscription", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "subscription id", + "name": "subscriptionID", + "in": "path", + "required": true + }, + { + "description": "Subscription Details", + "name": "subscription", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateSubscription" + } + } + ], + "responses": { + "202": { + "description": "Accepted", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.SubscriptionResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + }, + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint deletes a subscription", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Subscriptions" + ], + "summary": "Delete subscription", + "operationId": "DeleteSubscription", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "subscription id", + "name": "subscriptionID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint fetches all filters for a subscription", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Filters" + ], + "summary": "List all filters", + "operationId": "GetFilters", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Subscription ID", + "name": "subscriptionID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/models.FilterResponse" + } + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + }, + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint creates a new filter for a subscription", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Filters" + ], + "summary": "Create a new filter", + "operationId": "CreateFilter", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Subscription ID", + "name": "subscriptionID", + "in": "path", + "required": true + }, + { + "description": "Filter to create", + "name": "filter", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateFilterRequest" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.FilterResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint creates multiple filters for a subscription", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Filters" + ], + "summary": "Create multiple subscription filters", + "operationId": "BulkCreateFilters", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Subscription ID", + "name": "subscriptionID", + "in": "path", + "required": true + }, + { + "description": "Filters to create", + "name": "filters", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.CreateFilterRequest" + } + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/models.FilterResponse" + } + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk_update": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint updates multiple filters for a subscription", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Filters" + ], + "summary": "Update multiple subscription filters", + "operationId": "BulkUpdateFilters", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Subscription ID", + "name": "subscriptionID", + "in": "path", + "required": true + }, + { + "description": "Filters to update", + "name": "filters", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.BulkUpdateFilterRequest" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/models.FilterResponse" + } + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/test/{eventType}": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint tests a filter against a payload", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Filters" + ], + "summary": "Test a filter", + "operationId": "TestFilter", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Subscription ID", + "name": "subscriptionID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Event Type", + "name": "eventType", + "in": "path", + "required": true + }, + { + "description": "Payload to test", + "name": "payload", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.TestFilterRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.TestFilterResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + }, + "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/{filterID}": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint retrieves a single filter", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Filters" + ], + "summary": "Get a filter", + "operationId": "GetFilter", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Subscription ID", + "name": "subscriptionID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Filter ID", + "name": "filterID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.FilterResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + }, + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint updates an existing filter", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Filters" + ], + "summary": "Update a filter", + "operationId": "UpdateFilter", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Subscription ID", + "name": "subscriptionID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Filter ID", + "name": "filterID", + "in": "path", + "required": true + }, + { + "description": "Updated filter", + "name": "filter", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateFilterRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.FilterResponse" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + }, + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "This endpoint deletes a filter", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Filters" + ], + "summary": "Delete a filter", + "operationId": "DeleteFilter", + "parameters": [ + { + "type": "string", + "description": "Project ID", + "name": "projectID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Subscription ID", + "name": "subscriptionID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Filter ID", + "name": "filterID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/util.ServerResponse" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/handlers.Stub" + } + } + } + ] + } + } + } + } + } + }, + "definitions": { + "datastore.AlertConfiguration": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "threshold": { + "type": "string" + } + } + }, + "datastore.AmqpCredentials": { + "type": "object", + "properties": { + "password": { + "type": "string" + }, + "user": { + "type": "string" + } + } + }, + "datastore.AmqpPubSubConfig": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/definitions/datastore.AmqpCredentials" + }, + "bindedExchange": { + "type": "string" + }, + "deadLetterExchange": { + "type": "string" + }, + "host": { + "type": "string" + }, + "port": { + "type": "string" + }, + "queue": { + "type": "string" + }, + "routingKey": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "vhost": { + "type": "string" + } + } + }, + "datastore.ApiKey": { + "type": "object", + "properties": { + "header_name": { + "type": "string" + }, + "header_value": { + "type": "string" + } + } + }, + "datastore.BasicAuth": { + "type": "object", + "properties": { + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "datastore.CLIMetadata": { + "type": "object", + "properties": { + "event_type": { + "type": "string" + }, + "source_id": { + "type": "string" + } + } + }, + "datastore.CreatePortalLinkRequest": { + "type": "object", + "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", + "type": "array", + "items": { + "type": "string" + } + }, + "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" + } + } + }, + "datastore.CustomResponse": { + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "content_type": { + "type": "string" + } + } + }, + "datastore.DeliveryAttempt": { + "type": "object", + "properties": { + "api_version": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "deleted_at": { + "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": "#/definitions/datastore.HttpHeader" + }, + "response_data": { + "type": "string" + }, + "response_http_header": { + "$ref": "#/definitions/datastore.HttpHeader" + }, + "status": { + "type": "boolean" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "datastore.DeliveryMode": { + "type": "string", + "enum": [ + "at_least_once", + "at_most_once" + ], + "x-enum-varnames": [ + "AtLeastOnceDeliveryMode", + "AtMostOnceDeliveryMode" + ] + }, + "datastore.Device": { + "type": "object", + "properties": { + "created_at": { + "type": "string" + }, + "deleted_at": { + "type": "string" + }, + "endpoint_id": { + "type": "string" + }, + "host_name": { + "type": "string" + }, + "last_seen_at": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/datastore.DeviceStatus" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + } + }, + "datastore.DeviceStatus": { + "type": "string", + "enum": [ + "offline", + "online", + "disabled" + ], + "x-enum-varnames": [ + "DeviceStatusOffline", + "DeviceStatusOnline", + "DeviceStatusDisabled" + ] + }, + "datastore.EncodingType": { + "type": "string", + "enum": [ + "base64", + "hex" + ], + "x-enum-varnames": [ + "Base64Encoding", + "HexEncoding" + ] + }, + "datastore.Endpoint": { + "type": "object", + "properties": { + "advanced_signatures": { + "type": "boolean" + }, + "authentication": { + "$ref": "#/definitions/datastore.EndpointAuthentication" + }, + "content_type": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "deleted_at": { + "type": "string" + }, + "description": { + "type": "string" + }, + "events": { + "type": "integer" + }, + "failure_rate": { + "type": "number" + }, + "http_timeout": { + "type": "integer" + }, + "mtls_client_cert": { + "description": "mTLS client certificate configuration", + "allOf": [ + { + "$ref": "#/definitions/datastore.MtlsClientCert" } + ] + }, + "name": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "rate_limit": { + "type": "integer" + }, + "rate_limit_duration": { + "type": "integer" + }, + "secrets": { + "type": "array", + "items": { + "$ref": "#/definitions/datastore.Secret" + } + }, + "slack_webhook_url": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/datastore.EndpointStatus" + }, + "support_email": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "datastore.EndpointAuthentication": { + "type": "object", + "properties": { + "api_key": { + "$ref": "#/definitions/datastore.ApiKey" + }, + "basic_auth": { + "$ref": "#/definitions/datastore.BasicAuth" + }, + "oauth2": { + "$ref": "#/definitions/datastore.OAuth2" + }, + "type": { + "$ref": "#/definitions/datastore.EndpointAuthenticationType" + } + } + }, + "datastore.EndpointAuthenticationType": { + "type": "string", + "enum": [ + "api_key", + "oauth2", + "basic_auth" + ], + "x-enum-varnames": [ + "APIKeyAuthentication", + "OAuth2Authentication", + "BasicAuthentication" + ] + }, + "datastore.EndpointStatus": { + "type": "string", + "enum": [ + "active", + "inactive", + "paused" + ], + "x-enum-varnames": [ + "ActiveEndpointStatus", + "InactiveEndpointStatus", + "PausedEndpointStatus" + ] + }, + "datastore.Event": { + "type": "object", + "properties": { + "acknowledged_at": { + "type": "string" + }, + "app_id": { + "description": "Deprecated", + "type": "string" + }, + "created_at": { + "type": "string" + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "type": "array", + "items": { + "type": "integer" + } + }, + "deleted_at": { + "type": "string" + }, + "endpoint_metadata": { + "type": "array", + "items": { + "$ref": "#/definitions/datastore.Endpoint" + } + }, + "endpoints": { + "type": "array", + "items": { + "type": "string" + } + }, + "event_type": { + "type": "string" + }, + "headers": { + "$ref": "#/definitions/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": { + "$ref": "#/definitions/datastore.Source" + }, + "status": { + "$ref": "#/definitions/datastore.EventStatus" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url_query_params": { + "type": "string" + } + } + }, + "datastore.EventDeliveryStatus": { + "type": "string", + "enum": [ + "Scheduled", + "Processing", + "Discarded", + "Failure", + "Success", + "Retry" + ], + "x-enum-varnames": [ + "ScheduledEventStatus", + "ProcessingEventStatus", + "DiscardedEventStatus", + "FailureEventStatus", + "SuccessEventStatus", + "RetryEventStatus" + ] + }, + "datastore.EventStatus": { + "type": "string", + "enum": [ + "Processing", + "Failure", + "Success", + "Retry", + "Pending" + ], + "x-enum-varnames": [ + "ProcessingStatus", + "FailureStatus", + "SuccessStatus", + "RetryStatus", + "PendingStatus" + ] + }, + "datastore.FilterConfiguration": { + "type": "object", + "properties": { + "event_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "filter": { + "$ref": "#/definitions/datastore.FilterSchema" + } + } + }, + "datastore.FilterSchema": { + "type": "object", + "properties": { + "body": { + "$ref": "#/definitions/datastore.M" + }, + "headers": { + "$ref": "#/definitions/datastore.M" + }, + "is_flattened": { + "type": "boolean" + } + } + }, + "datastore.GooglePubSubConfig": { + "type": "object", + "properties": { + "project_id": { + "type": "string" + }, + "service_account": { + "type": "array", + "items": { + "type": "integer" + } + }, + "subscription_id": { + "type": "string" + } + } + }, + "datastore.HMac": { + "type": "object", + "properties": { + "encoding": { + "$ref": "#/definitions/datastore.EncodingType" + }, + "hash": { + "type": "string" + }, + "header": { + "type": "string" + }, + "secret": { + "type": "string" + } + } + }, + "datastore.HttpHeader": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "datastore.KafkaAuth": { + "type": "object", + "properties": { + "hash": { + "type": "string" + }, + "password": { + "type": "string" + }, + "tls": { + "type": "boolean" + }, + "type": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "datastore.KafkaPubSubConfig": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/definitions/datastore.KafkaAuth" + }, + "brokers": { + "type": "array", + "items": { + "type": "string" + } + }, + "consumer_group_id": { + "type": "string" + }, + "topic_name": { + "type": "string" + } + } + }, + "datastore.M": { + "type": "object", + "additionalProperties": true + }, + "datastore.MetaEventAttempt": { + "type": "object", + "properties": { + "request_http_header": { + "$ref": "#/definitions/datastore.HttpHeader" + }, + "response_data": { + "type": "string" + }, + "response_http_header": { + "$ref": "#/definitions/datastore.HttpHeader" + } + } + }, + "datastore.Metadata": { + "type": "object", + "properties": { + "data": { + "description": "Data to be sent to endpoint.", + "type": "array", + "items": { + "type": "integer" + } + }, + "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": "#/definitions/datastore.StrategyProvider" + } + } + }, + "datastore.MtlsClientCert": { + "type": "object", + "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" + } + } + }, + "datastore.OAuth2": { + "type": "object", + "properties": { + "audience": { + "type": "string" + }, + "authentication_type": { + "$ref": "#/definitions/datastore.OAuth2AuthenticationType" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "description": "Encrypted at rest", + "type": "string" + }, + "expiry_time_unit": { + "description": "Expiry time unit (seconds, milliseconds, minutes, hours)", + "allOf": [ + { + "$ref": "#/definitions/datastore.OAuth2ExpiryTimeUnit" + } + ] + }, + "field_mapping": { + "description": "Field mapping for flexible token response parsing", + "allOf": [ + { + "$ref": "#/definitions/datastore.OAuth2FieldMapping" + } + ] + }, + "grant_type": { + "type": "string" + }, + "issuer": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "signing_algorithm": { + "type": "string" + }, + "signing_key": { + "description": "Encrypted at rest", + "allOf": [ + { + "$ref": "#/definitions/datastore.OAuth2SigningKey" + } + ] + }, + "subject": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "datastore.OAuth2AuthenticationType": { + "type": "string", + "enum": [ + "shared_secret", + "client_assertion" + ], + "x-enum-varnames": [ + "SharedSecretAuth", + "ClientAssertionAuth" + ] + }, + "datastore.OAuth2ExpiryTimeUnit": { + "type": "string", + "enum": [ + "seconds", + "milliseconds", + "minutes", + "hours" + ], + "x-enum-varnames": [ + "ExpiryTimeUnitSeconds", + "ExpiryTimeUnitMilliseconds", + "ExpiryTimeUnitMinutes", + "ExpiryTimeUnitHours" + ] + }, + "datastore.OAuth2FieldMapping": { + "type": "object", + "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" + } + } + }, + "datastore.OAuth2SigningKey": { + "type": "object", + "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" + } + } + }, + "datastore.PageDirection": { + "type": "string", + "enum": [ + "next", + "prev" + ], + "x-enum-varnames": [ + "Next", + "Prev" + ] + }, + "datastore.PaginationData": { + "type": "object", + "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" + } + } + }, + "datastore.PortalAuthType": { + "type": "string", + "enum": [ + "refresh_token", + "static_token" + ], + "x-enum-varnames": [ + "PortalAuthTypeRefreshToken", + "PortalAuthTypeStaticToken" + ] + }, + "datastore.PortalLinkResponse": { + "type": "object", + "properties": { + "auth_key": { + "type": "string" + }, + "auth_type": { + "$ref": "#/definitions/datastore.PortalAuthType" + }, + "can_manage_endpoint": { + "type": "boolean" + }, + "created_at": { + "type": "string" + }, + "deleted_at": { + "type": "string" + }, + "endpoint_count": { + "type": "integer" + }, + "endpoints": { + "type": "array", + "items": { + "type": "string" + } + }, + "endpoints_metadata": { + "type": "array", + "items": { + "$ref": "#/definitions/datastore.Endpoint" + } + }, + "name": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "token": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "datastore.ProviderConfig": { + "type": "object", + "properties": { + "twitter": { + "$ref": "#/definitions/datastore.TwitterProviderConfig" + } + } + }, + "datastore.PubSubConfig": { + "type": "object", + "properties": { + "amqp": { + "$ref": "#/definitions/datastore.AmqpPubSubConfig" + }, + "google": { + "$ref": "#/definitions/datastore.GooglePubSubConfig" + }, + "kafka": { + "$ref": "#/definitions/datastore.KafkaPubSubConfig" + }, + "sqs": { + "$ref": "#/definitions/datastore.SQSPubSubConfig" + }, + "type": { + "$ref": "#/definitions/datastore.PubSubType" + }, + "workers": { + "type": "integer" + } + } + }, + "datastore.PubSubType": { + "type": "string", + "enum": [ + "sqs", + "google", + "kafka", + "amqp" + ], + "x-enum-varnames": [ + "SqsPubSub", + "GooglePubSub", + "KafkaPubSub", + "AmqpPubSub" + ] + }, + "datastore.RateLimitConfiguration": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "duration": { + "type": "integer" + } + } + }, + "datastore.RetryConfiguration": { + "type": "object", + "properties": { + "duration": { + "type": "integer" + }, + "retry_count": { + "type": "integer" + }, + "type": { + "$ref": "#/definitions/datastore.StrategyProvider" + } + } + }, + "datastore.SQSPubSubConfig": { + "type": "object", + "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" + } + } + }, + "datastore.Secret": { + "type": "object", + "properties": { + "created_at": { + "type": "string" + }, + "deleted_at": { + "type": "string" + }, + "expires_at": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "datastore.Source": { + "type": "object", + "properties": { + "body_function": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "custom_response": { + "$ref": "#/definitions/datastore.CustomResponse" + }, + "deleted_at": { + "type": "string" + }, + "forward_headers": { + "type": "array", + "items": { + "type": "string" + } }, - "/v1/projects/{projectID}/portal-links/{portalLinkID}": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint retrieves a portal link by its id.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Portal Links" - ], - "summary": "Retrieve a portal link", - "operationId": "GetPortalLink", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "portal link id", - "name": "portalLinkID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/datastore.PortalLinkResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - }, - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint updates a portal link", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Portal Links" - ], - "summary": "Update a portal link", - "operationId": "UpdatePortalLink", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "portal link id", - "name": "portalLinkID", - "in": "path", - "required": true - }, - { - "description": "Portal Link Details", - "name": "portallink", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/datastore.UpdatePortalLinkRequest" - } - } - ], - "responses": { - "202": { - "description": "Accepted", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/datastore.PortalLinkResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "header_function": { + "type": "string" }, - "/v1/projects/{projectID}/portal-links/{portalLinkID}/refresh_token": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint retrieves a portal link auth token", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Portal Links" - ], - "summary": "Get a portal link auth token", - "operationId": "RefreshPortalLinkAuthToken", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "portal link id", - "name": "portalLinkID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "type": "string" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "idempotency_keys": { + "type": "array", + "items": { + "type": "string" + } }, - "/v1/projects/{projectID}/portal-links/{portalLinkID}/revoke": { - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint revokes a portal link", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Portal Links" - ], - "summary": "Revoke a portal link", - "operationId": "RevokePortalLink", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "portal link id", - "name": "portalLinkID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "is_disabled": { + "type": "boolean" }, - "/v1/projects/{projectID}/sources": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches multiple sources", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Sources" - ], - "summary": "List all sources", - "operationId": "LoadSourcesPaged", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "enum": [ - "next", - "prev" - ], - "type": "string", - "x-enum-varnames": [ - "Next", - "Prev" - ], - "name": "direction", - "in": "query" - }, - { - "type": "string", - "example": "01H0JA5MEES38RRK3HTEJC647K", - "description": "A pagination cursor to fetch the next page of a list", - "name": "next_page_cursor", - "in": "query" - }, - { - "type": "integer", - "example": 20, - "description": "The number of items to return per page", - "name": "perPage", - "in": "query" - }, - { - "type": "string", - "example": "01H0JATTVCXZK8FRDX1M1JN3QY", - "description": "A pagination cursor to fetch the previous page of a list", - "name": "prev_page_cursor", - "in": "query" - }, - { - "type": "string", - "example": "twitter", - "description": "The custom source provider e.g. twitter, shopify", - "name": "provider", - "in": "query" - }, - { - "type": "string", - "example": "ASC | DESC", - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "name": "sort", - "in": "query" - }, - { - "type": "string", - "example": "http", - "description": "The source type e.g. http, pub_sub", - "name": "type", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "allOf": [ - { - "$ref": "#/definitions/models.PagedResponse" - }, - { - "type": "object", - "properties": { - "content": { - "type": "array", - "items": { - "$ref": "#/definitions/models.SourceResponse" - } - } - } - } - ] - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - }, - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint creates a source", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Sources" - ], - "summary": "Create a source", - "operationId": "CreateSource", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Source Details", - "name": "source", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateSource" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.SourceResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "mask_id": { + "type": "string" }, - "/v1/projects/{projectID}/sources/test_function": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint validates that a filter will match a certain payload structure.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Subscriptions" - ], - "summary": "Validate source function", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Function Details", - "name": "filter", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.FunctionRequest" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.FunctionResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "name": { + "type": "string" }, - "/v1/projects/{projectID}/sources/{sourceID}": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint retrieves a source by its id", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Sources" - ], - "summary": "Retrieve a source", - "operationId": "GetSource", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Source ID", - "name": "sourceID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.SourceResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - }, - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint updates a source", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Sources" - ], - "summary": "Update a source", - "operationId": "UpdateSource", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "source id", - "name": "sourceID", - "in": "path", - "required": true - }, - { - "description": "Source Details", - "name": "source", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateSource" - } - } - ], - "responses": { - "202": { - "description": "Accepted", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.SourceResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - }, - "delete": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint deletes a source", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Sources" - ], - "summary": "Delete a source", - "operationId": "DeleteSource", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "source id", - "name": "sourceID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "project_id": { + "type": "string" }, - "/v1/projects/{projectID}/subscriptions": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches all the subscriptions", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Subscriptions" - ], - "summary": "List all subscriptions", - "operationId": "GetSubscriptions", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "enum": [ - "next", - "prev" - ], - "type": "string", - "x-enum-varnames": [ - "Next", - "Prev" - ], - "name": "direction", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "A list of endpointIDs to filter by", - "name": "endpointId", - "in": "query" - }, - { - "type": "string", - "description": "Subscription name to filter by", - "name": "name", - "in": "query" - }, - { - "type": "string", - "example": "01H0JA5MEES38RRK3HTEJC647K", - "description": "A pagination cursor to fetch the next page of a list", - "name": "next_page_cursor", - "in": "query" - }, - { - "type": "integer", - "example": 20, - "description": "The number of items to return per page", - "name": "perPage", - "in": "query" - }, - { - "type": "string", - "example": "01H0JATTVCXZK8FRDX1M1JN3QY", - "description": "A pagination cursor to fetch the previous page of a list", - "name": "prev_page_cursor", - "in": "query" - }, - { - "type": "string", - "example": "ASC | DESC", - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "name": "sort", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "allOf": [ - { - "$ref": "#/definitions/models.PagedResponse" - }, - { - "type": "object", - "properties": { - "content": { - "type": "array", - "items": { - "$ref": "#/definitions/models.SubscriptionResponse" - } - } - } - } - ] - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - }, - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint creates a subscriptions", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Subscriptions" - ], - "summary": "Create a subscription", - "operationId": "CreateSubscription", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Subscription details", - "name": "subscription", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateSubscription" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.SubscriptionResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "provider": { + "$ref": "#/definitions/datastore.SourceProvider" }, - "/v1/projects/{projectID}/subscriptions/test_filter": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint validates that a filter will match a certain payload structure.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Subscriptions" - ], - "summary": "Validate subscription filter", - "operationId": "TestSubscriptionFilter", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Filter Details", - "name": "filter", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.TestFilter" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "type": "boolean" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "provider_config": { + "$ref": "#/definitions/datastore.ProviderConfig" }, - "/v1/projects/{projectID}/subscriptions/test_function": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint test runs a transform function against a payload.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Subscriptions" - ], - "summary": "Test a subscription function", - "operationId": "TestSubscriptionFunction", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "description": "Function Details", - "name": "filter", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.FunctionRequest" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.FunctionResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "pub_sub": { + "$ref": "#/definitions/datastore.PubSubConfig" }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint retrieves a single subscription", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Subscriptions" - ], - "summary": "Retrieve a subscription", - "operationId": "GetSubscription", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "subscription id", - "name": "subscriptionID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.SubscriptionResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - }, - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint updates a subscription", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Subscriptions" - ], - "summary": "Update a subscription", - "operationId": "UpdateSubscription", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "subscription id", - "name": "subscriptionID", - "in": "path", - "required": true - }, - { - "description": "Subscription Details", - "name": "subscription", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateSubscription" - } - } - ], - "responses": { - "202": { - "description": "Accepted", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.SubscriptionResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - }, - "delete": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint deletes a subscription", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Subscriptions" - ], - "summary": "Delete subscription", - "operationId": "DeleteSubscription", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "subscription id", - "name": "subscriptionID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "type": { + "$ref": "#/definitions/datastore.SourceType" }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint fetches all filters for a subscription", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Filters" - ], - "summary": "List all filters", - "operationId": "GetFilters", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Subscription ID", - "name": "subscriptionID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/models.FilterResponse" - } - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - }, - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint creates a new filter for a subscription", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Filters" - ], - "summary": "Create a new filter", - "operationId": "CreateFilter", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Subscription ID", - "name": "subscriptionID", - "in": "path", - "required": true - }, - { - "description": "Filter to create", - "name": "filter", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateFilterRequest" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.FilterResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "uid": { + "type": "string" }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint creates multiple filters for a subscription", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Filters" - ], - "summary": "Create multiple subscription filters", - "operationId": "BulkCreateFilters", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Subscription ID", - "name": "subscriptionID", - "in": "path", - "required": true - }, - { - "description": "Filters to create", - "name": "filters", - "in": "body", - "required": true, - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.CreateFilterRequest" - } - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/models.FilterResponse" - } - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "updated_at": { + "type": "string" }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk_update": { - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint updates multiple filters for a subscription", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Filters" - ], - "summary": "Update multiple subscription filters", - "operationId": "BulkUpdateFilters", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Subscription ID", - "name": "subscriptionID", - "in": "path", - "required": true - }, - { - "description": "Filters to update", - "name": "filters", - "in": "body", - "required": true, - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.BulkUpdateFilterRequest" - } - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/models.FilterResponse" - } - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "url": { + "type": "string" }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/test/{eventType}": { - "post": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint tests a filter against a payload", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Filters" - ], - "summary": "Test a filter", - "operationId": "TestFilter", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Subscription ID", - "name": "subscriptionID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Event Type", - "name": "eventType", - "in": "path", - "required": true - }, - { - "description": "Payload to test", - "name": "payload", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.TestFilterRequest" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.TestFilterResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "verifier": { + "$ref": "#/definitions/datastore.VerifierConfig" + } + } + }, + "datastore.SourceProvider": { + "type": "string", + "enum": [ + "github", + "twitter", + "shopify" + ], + "x-enum-varnames": [ + "GithubSourceProvider", + "TwitterSourceProvider", + "ShopifySourceProvider" + ] + }, + "datastore.SourceType": { + "type": "string", + "enum": [ + "http", + "rest_api", + "pub_sub", + "db_change_stream" + ], + "x-enum-varnames": [ + "HTTPSource", + "RestApiSource", + "PubSubSource", + "DBChangeStream" + ] + }, + "datastore.StrategyProvider": { + "type": "string", + "enum": [ + "linear", + "exponential" + ], + "x-enum-varnames": [ + "LinearStrategyProvider", + "ExponentialStrategyProvider" + ] + }, + "datastore.SubscriptionType": { + "type": "string", + "enum": [ + "cli", + "api" + ], + "x-enum-varnames": [ + "SubscriptionTypeCLI", + "SubscriptionTypeAPI" + ] + }, + "datastore.TwitterProviderConfig": { + "type": "object", + "properties": { + "crc_verified_at": { + "type": "string" + } + } + }, + "datastore.UpdatePortalLinkRequest": { + "type": "object", + "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", + "type": "array", + "items": { + "type": "string" + } + }, + "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" + } + } + }, + "datastore.VerifierConfig": { + "type": "object", + "properties": { + "api_key": { + "$ref": "#/definitions/datastore.ApiKey" }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/{filterID}": { - "get": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint retrieves a single filter", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Filters" - ], - "summary": "Get a filter", - "operationId": "GetFilter", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Subscription ID", - "name": "subscriptionID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Filter ID", - "name": "filterID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.FilterResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - }, - "put": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint updates an existing filter", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Filters" - ], - "summary": "Update a filter", - "operationId": "UpdateFilter", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Subscription ID", - "name": "subscriptionID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Filter ID", - "name": "filterID", - "in": "path", - "required": true - }, - { - "description": "Updated filter", - "name": "filter", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateFilterRequest" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/models.FilterResponse" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - }, - "delete": { - "security": [ - { - "ApiKeyAuth": [] - } - ], - "description": "This endpoint deletes a filter", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Filters" - ], - "summary": "Delete a filter", - "operationId": "DeleteFilter", - "parameters": [ - { - "type": "string", - "description": "Project ID", - "name": "projectID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Subscription ID", - "name": "subscriptionID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Filter ID", - "name": "filterID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "400": { - "description": "Bad Request", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - }, - "404": { - "description": "Not Found", - "schema": { - "allOf": [ - { - "$ref": "#/definitions/util.ServerResponse" - }, - { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/handlers.Stub" - } - } - } - ] - } - } - } - } + "basic_auth": { + "$ref": "#/definitions/datastore.BasicAuth" + }, + "hmac": { + "$ref": "#/definitions/datastore.HMac" + }, + "type": { + "$ref": "#/definitions/datastore.VerifierType" + } + } + }, + "datastore.VerifierType": { + "type": "string", + "enum": [ + "noop", + "hmac", + "basic_auth", + "api_key" + ], + "x-enum-varnames": [ + "NoopVerifier", + "HMacVerifier", + "BasicAuthVerifier", + "APIKeyVerifier" + ] + }, + "handlers.Stub": { + "type": "object" + }, + "httpheader.HTTPHeader": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "models.AlertConfiguration": { + "type": "object", + "properties": { + "count": { + "description": "Count", + "type": "integer" + }, + "threshold": { + "description": "Threshold", + "type": "string" + } + } + }, + "models.AmqpAuth": { + "type": "object", + "properties": { + "password": { + "type": "string" + }, + "user": { + "type": "string" + } + } + }, + "models.AmqpExchange": { + "type": "object", + "properties": { + "exchange": { + "type": "string" + }, + "routingKey": { + "type": "string" + } + } + }, + "models.AmqpPubSubconfig": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/definitions/models.AmqpAuth" + }, + "bindExchange": { + "$ref": "#/definitions/models.AmqpExchange" + }, + "deadLetterExchange": { + "type": "string" + }, + "host": { + "type": "string" + }, + "port": { + "type": "string" + }, + "queue": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "vhost": { + "type": "string" + } + } + }, + "models.ApiKey": { + "type": "object", + "required": [ + "header_name", + "header_value" + ], + "properties": { + "header_name": { + "type": "string" + }, + "header_value": { + "type": "string" + } + } + }, + "models.BasicAuth": { + "type": "object", + "required": [ + "password", + "username" + ], + "properties": { + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "models.BroadcastEvent": { + "type": "object", + "properties": { + "acknowledged_at": { + "type": "string" + }, + "custom_headers": { + "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "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" + } + } + }, + "models.BulkOnboardAcceptedResponse": { + "type": "object", + "properties": { + "batch_count": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "total_items": { + "type": "integer" + } + } + }, + "models.BulkOnboardDryRunResponse": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "items": { + "$ref": "#/definitions/models.OnboardValidationError" + } + }, + "total_rows": { + "type": "integer" + }, + "valid_count": { + "type": "integer" + } + } + }, + "models.BulkOnboardRequest": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/models.OnboardItem" + } + } + } + }, + "models.BulkUpdateFilterRequest": { + "type": "object", + "required": [ + "uid" + ], + "properties": { + "body": { + "type": "object", + "additionalProperties": true + }, + "event_type": { + "type": "string" + }, + "headers": { + "type": "object", + "additionalProperties": true + }, + "uid": { + "type": "string" + } + } + }, + "models.CreateEndpoint": { + "type": "object", + "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": { + "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.", + "allOf": [ + { + "$ref": "#/definitions/models.EndpointAuthentication" + } + ] + }, + "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": { + "description": "mTLS client certificate configuration for the endpoint", + "allOf": [ + { + "$ref": "#/definitions/models.MtlsClientCert" + } + ] + }, + "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" + } + } + }, + "models.CreateEvent": { + "type": "object", + "properties": { + "app_id": { + "description": "Deprecated but necessary for backward compatibility.", + "type": "string" + }, + "custom_headers": { + "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "type": "object" + }, + "endpoint_id": { + "description": "Specifies the endpoint to send this event to.", + "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" + } + } + }, + "models.CreateEventType": { + "type": "object", + "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": { + "description": "JSONSchema is the JSON structure of the event type", + "type": "object", + "additionalProperties": true + }, + "name": { + "description": "Name is the event type name. E.g., invoice.created", + "type": "string" } + } }, - "definitions": { - "datastore.AlertConfiguration": { - "type": "object", - "properties": { - "count": { - "type": "integer" - }, - "threshold": { - "type": "string" - } - } + "models.CreateFilterRequest": { + "type": "object", + "required": [ + "event_type" + ], + "properties": { + "body": { + "description": "Body matching criteria (optional)", + "allOf": [ + { + "$ref": "#/definitions/datastore.M" + } + ] + }, + "event_type": { + "description": "Type of event this filter applies to (required)", + "type": "string" + }, + "headers": { + "description": "Header matching criteria (optional)", + "allOf": [ + { + "$ref": "#/definitions/datastore.M" + } + ] + } + } + }, + "models.CreateSource": { + "type": "object", + "properties": { + "body_function": { + "description": "Function is a javascript function used to mutate the payload\nimmediately after ingesting an event", + "type": "string" + }, + "custom_response": { + "description": "Custom response is used to define a custom response for incoming\nwebhooks project sources only.", + "allOf": [ + { + "$ref": "#/definitions/models.CustomResponse" + } + ] + }, + "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.", + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "description": "Source name.", + "type": "string" + }, + "provider": { + "description": "Use this to specify one of our predefined source types.", + "allOf": [ + { + "$ref": "#/definitions/datastore.SourceProvider" + } + ] + }, + "pub_sub": { + "description": "PubSub are used to specify message broker sources for outgoing\nwebhooks projects.", + "allOf": [ + { + "$ref": "#/definitions/models.PubSubConfig" + } + ] + }, + "type": { + "description": "Source Type.", + "allOf": [ + { + "$ref": "#/definitions/datastore.SourceType" + } + ] + }, + "verifier": { + "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.", + "allOf": [ + { + "$ref": "#/definitions/models.VerifierConfig" + } + ] + } + } + }, + "models.CreateSubscription": { + "type": "object", + "properties": { + "alert_config": { + "description": "Alert configuration", + "allOf": [ + { + "$ref": "#/definitions/models.AlertConfiguration" + } + ] + }, + "app_id": { + "description": "Deprecated but necessary for backward compatibility", + "type": "string" + }, + "delivery_mode": { + "description": "Delivery mode configuration", + "allOf": [ + { + "$ref": "#/definitions/datastore.DeliveryMode" + } + ] + }, + "endpoint_id": { + "description": "Destination endpoint ID", + "type": "string" + }, + "filter_config": { + "description": "Filter configuration", + "allOf": [ + { + "$ref": "#/definitions/models.FilterConfiguration" + } + ] + }, + "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": { + "description": "Rate limit configuration", + "allOf": [ + { + "$ref": "#/definitions/models.RateLimitConfiguration" + } + ] + }, + "source_id": { + "description": "Source Id", + "type": "string" + } + } + }, + "models.CustomResponse": { + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "content_type": { + "type": "string" + } + } + }, + "models.DynamicEvent": { + "type": "object", + "properties": { + "custom_headers": { + "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "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", + "type": "array", + "items": { + "type": "string" + } + }, + "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" + } + } + }, + "models.EndpointAuthentication": { + "type": "object", + "properties": { + "api_key": { + "$ref": "#/definitions/models.ApiKey" }, - "datastore.AmqpCredentials": { - "type": "object", - "properties": { - "password": { - "type": "string" - }, - "user": { - "type": "string" - } - } + "basic_auth": { + "$ref": "#/definitions/models.BasicAuth" }, - "datastore.AmqpPubSubConfig": { - "type": "object", - "properties": { - "auth": { - "$ref": "#/definitions/datastore.AmqpCredentials" - }, - "bindedExchange": { - "type": "string" - }, - "deadLetterExchange": { - "type": "string" - }, - "host": { - "type": "string" - }, - "port": { - "type": "string" - }, - "queue": { - "type": "string" - }, - "routingKey": { - "type": "string" - }, - "schema": { - "type": "string" - }, - "vhost": { - "type": "string" - } - } + "oauth2": { + "$ref": "#/definitions/models.OAuth2" }, - "datastore.ApiKey": { - "type": "object", - "properties": { - "header_name": { - "type": "string" - }, - "header_value": { - "type": "string" - } - } + "type": { + "$ref": "#/definitions/datastore.EndpointAuthenticationType" + } + } + }, + "models.EndpointResponse": { + "type": "object", + "properties": { + "advanced_signatures": { + "type": "boolean" }, - "datastore.BasicAuth": { - "type": "object", - "properties": { - "password": { - "type": "string" - }, - "username": { - "type": "string" - } - } + "authentication": { + "$ref": "#/definitions/datastore.EndpointAuthentication" }, - "datastore.CLIMetadata": { - "type": "object", - "properties": { - "event_type": { - "type": "string" - }, - "source_id": { - "type": "string" - } - } + "content_type": { + "type": "string" }, - "datastore.CreatePortalLinkRequest": { - "type": "object", - "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", - "type": "array", - "items": { - "type": "string" - } - }, - "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" - } - } + "created_at": { + "type": "string" }, - "datastore.CustomResponse": { - "type": "object", - "properties": { - "body": { - "type": "string" - }, - "content_type": { - "type": "string" - } - } + "deleted_at": { + "type": "string" }, - "datastore.DeliveryAttempt": { - "type": "object", - "properties": { - "api_version": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "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": "#/definitions/datastore.HttpHeader" - }, - "response_data": { - "type": "string" - }, - "response_http_header": { - "$ref": "#/definitions/datastore.HttpHeader" - }, - "status": { - "type": "boolean" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - } - } + "description": { + "type": "string" }, - "datastore.DeliveryMode": { - "type": "string", - "enum": [ - "at_least_once", - "at_most_once" - ], - "x-enum-varnames": [ - "AtLeastOnceDeliveryMode", - "AtMostOnceDeliveryMode" - ] + "events": { + "type": "integer" }, - "datastore.Device": { - "type": "object", - "properties": { - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "endpoint_id": { - "type": "string" - }, - "host_name": { - "type": "string" - }, - "last_seen_at": { - "type": "string" - }, - "project_id": { - "type": "string" - }, - "status": { - "$ref": "#/definitions/datastore.DeviceStatus" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - } + "failure_rate": { + "type": "number" + }, + "http_timeout": { + "type": "integer" + }, + "mtls_client_cert": { + "description": "mTLS client certificate configuration", + "allOf": [ + { + "$ref": "#/definitions/datastore.MtlsClientCert" } + ] }, - "datastore.DeviceStatus": { - "type": "string", - "enum": [ - "offline", - "online", - "disabled" - ], - "x-enum-varnames": [ - "DeviceStatusOffline", - "DeviceStatusOnline", - "DeviceStatusDisabled" - ] + "name": { + "type": "string" }, - "datastore.EncodingType": { - "type": "string", - "enum": [ - "base64", - "hex" - ], - "x-enum-varnames": [ - "Base64Encoding", - "HexEncoding" - ] + "owner_id": { + "type": "string" }, - "datastore.Endpoint": { - "type": "object", - "properties": { - "advanced_signatures": { - "type": "boolean" - }, - "authentication": { - "$ref": "#/definitions/datastore.EndpointAuthentication" - }, - "content_type": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "description": { - "type": "string" - }, - "events": { - "type": "integer" - }, - "failure_rate": { - "type": "number" - }, - "http_timeout": { - "type": "integer" - }, - "mtls_client_cert": { - "description": "mTLS client certificate configuration", - "allOf": [ - { - "$ref": "#/definitions/datastore.MtlsClientCert" - } - ] - }, - "name": { - "type": "string" - }, - "owner_id": { - "type": "string" - }, - "project_id": { - "type": "string" - }, - "rate_limit": { - "type": "integer" - }, - "rate_limit_duration": { - "type": "integer" - }, - "secrets": { - "type": "array", - "items": { - "$ref": "#/definitions/datastore.Secret" - } - }, - "slack_webhook_url": { - "type": "string" - }, - "status": { - "$ref": "#/definitions/datastore.EndpointStatus" - }, - "support_email": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - } - } + "project_id": { + "type": "string" }, - "datastore.EndpointAuthentication": { - "type": "object", - "properties": { - "api_key": { - "$ref": "#/definitions/datastore.ApiKey" - }, - "basic_auth": { - "$ref": "#/definitions/datastore.BasicAuth" - }, - "oauth2": { - "$ref": "#/definitions/datastore.OAuth2" - }, - "type": { - "$ref": "#/definitions/datastore.EndpointAuthenticationType" - } - } + "rate_limit": { + "type": "integer" }, - "datastore.EndpointAuthenticationType": { - "type": "string", - "enum": [ - "api_key", - "oauth2", - "basic_auth" - ], - "x-enum-varnames": [ - "APIKeyAuthentication", - "OAuth2Authentication", - "BasicAuthentication" - ] + "rate_limit_duration": { + "type": "integer" }, - "datastore.EndpointStatus": { - "type": "string", - "enum": [ - "active", - "inactive", - "paused" - ], - "x-enum-varnames": [ - "ActiveEndpointStatus", - "InactiveEndpointStatus", - "PausedEndpointStatus" - ] + "secrets": { + "type": "array", + "items": { + "$ref": "#/definitions/datastore.Secret" + } }, - "datastore.Event": { - "type": "object", - "properties": { - "acknowledged_at": { - "type": "string" - }, - "app_id": { - "description": "Deprecated", - "type": "string" - }, - "created_at": { - "type": "string" - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "type": "array", - "items": { - "type": "integer" - } - }, - "deleted_at": { - "type": "string" - }, - "endpoint_metadata": { - "type": "array", - "items": { - "$ref": "#/definitions/datastore.Endpoint" - } - }, - "endpoints": { - "type": "array", - "items": { - "type": "string" - } - }, - "event_type": { - "type": "string" - }, - "headers": { - "$ref": "#/definitions/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": { - "$ref": "#/definitions/datastore.Source" - }, - "status": { - "$ref": "#/definitions/datastore.EventStatus" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url_query_params": { - "type": "string" - } - } + "slack_webhook_url": { + "type": "string" }, - "datastore.EventDeliveryStatus": { - "type": "string", - "enum": [ - "Scheduled", - "Processing", - "Discarded", - "Failure", - "Success", - "Retry" - ], - "x-enum-varnames": [ - "ScheduledEventStatus", - "ProcessingEventStatus", - "DiscardedEventStatus", - "FailureEventStatus", - "SuccessEventStatus", - "RetryEventStatus" - ] + "status": { + "$ref": "#/definitions/datastore.EndpointStatus" }, - "datastore.EventStatus": { - "type": "string", - "enum": [ - "Processing", - "Failure", - "Success", - "Retry", - "Pending" - ], - "x-enum-varnames": [ - "ProcessingStatus", - "FailureStatus", - "SuccessStatus", - "RetryStatus", - "PendingStatus" - ] + "support_email": { + "type": "string" }, - "datastore.FilterConfiguration": { - "type": "object", - "properties": { - "event_types": { - "type": "array", - "items": { - "type": "string" - } - }, - "filter": { - "$ref": "#/definitions/datastore.FilterSchema" - } - } + "uid": { + "type": "string" }, - "datastore.FilterSchema": { - "type": "object", - "properties": { - "body": { - "$ref": "#/definitions/datastore.M" - }, - "headers": { - "$ref": "#/definitions/datastore.M" - }, - "is_flattened": { - "type": "boolean" - } - } + "updated_at": { + "type": "string" }, - "datastore.GooglePubSubConfig": { - "type": "object", - "properties": { - "project_id": { - "type": "string" - }, - "service_account": { - "type": "array", - "items": { - "type": "integer" - } - }, - "subscription_id": { - "type": "string" - } - } + "url": { + "type": "string" + } + } + }, + "models.EventDeliveryResponse": { + "type": "object", + "properties": { + "acknowledged_at": { + "type": "string" }, - "datastore.HMac": { - "type": "object", - "properties": { - "encoding": { - "$ref": "#/definitions/datastore.EncodingType" - }, - "hash": { - "type": "string" - }, - "header": { - "type": "string" - }, - "secret": { - "type": "string" - } - } + "cli_metadata": { + "$ref": "#/definitions/datastore.CLIMetadata" }, - "datastore.HttpHeader": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "created_at": { + "type": "string" }, - "datastore.KafkaAuth": { - "type": "object", - "properties": { - "hash": { - "type": "string" - }, - "password": { - "type": "string" - }, - "tls": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "username": { - "type": "string" - } - } + "deleted_at": { + "type": "string" }, - "datastore.KafkaPubSubConfig": { - "type": "object", - "properties": { - "auth": { - "$ref": "#/definitions/datastore.KafkaAuth" - }, - "brokers": { - "type": "array", - "items": { - "type": "string" - } - }, - "consumer_group_id": { - "type": "string" - }, - "topic_name": { - "type": "string" - } - } + "delivery_mode": { + "$ref": "#/definitions/datastore.DeliveryMode" }, - "datastore.M": { - "type": "object", - "additionalProperties": true + "description": { + "type": "string" }, - "datastore.MetaEventAttempt": { - "type": "object", - "properties": { - "request_http_header": { - "$ref": "#/definitions/datastore.HttpHeader" - }, - "response_data": { - "type": "string" - }, - "response_http_header": { - "$ref": "#/definitions/datastore.HttpHeader" - } - } + "device_id": { + "type": "string" }, - "datastore.Metadata": { - "type": "object", - "properties": { - "data": { - "description": "Data to be sent to endpoint.", - "type": "array", - "items": { - "type": "integer" - } - }, - "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": "#/definitions/datastore.StrategyProvider" - } - } + "device_metadata": { + "$ref": "#/definitions/datastore.Device" }, - "datastore.MtlsClientCert": { - "type": "object", - "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" - } - } + "endpoint_id": { + "type": "string" }, - "datastore.OAuth2": { - "type": "object", - "properties": { - "audience": { - "type": "string" - }, - "authentication_type": { - "$ref": "#/definitions/datastore.OAuth2AuthenticationType" - }, - "client_id": { - "type": "string" - }, - "client_secret": { - "description": "Encrypted at rest", - "type": "string" - }, - "expiry_time_unit": { - "description": "Expiry time unit (seconds, milliseconds, minutes, hours)", - "allOf": [ - { - "$ref": "#/definitions/datastore.OAuth2ExpiryTimeUnit" - } - ] - }, - "field_mapping": { - "description": "Field mapping for flexible token response parsing", - "allOf": [ - { - "$ref": "#/definitions/datastore.OAuth2FieldMapping" - } - ] - }, - "grant_type": { - "type": "string" - }, - "issuer": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "signing_algorithm": { - "type": "string" - }, - "signing_key": { - "description": "Encrypted at rest", - "allOf": [ - { - "$ref": "#/definitions/datastore.OAuth2SigningKey" - } - ] - }, - "subject": { - "type": "string" - }, - "url": { - "type": "string" - } - } + "endpoint_metadata": { + "$ref": "#/definitions/datastore.Endpoint" }, - "datastore.OAuth2AuthenticationType": { - "type": "string", - "enum": [ - "shared_secret", - "client_assertion" - ], - "x-enum-varnames": [ - "SharedSecretAuth", - "ClientAssertionAuth" - ] + "event_id": { + "type": "string" }, - "datastore.OAuth2ExpiryTimeUnit": { - "type": "string", - "enum": [ - "seconds", - "milliseconds", - "minutes", - "hours" - ], - "x-enum-varnames": [ - "ExpiryTimeUnitSeconds", - "ExpiryTimeUnitMilliseconds", - "ExpiryTimeUnitMinutes", - "ExpiryTimeUnitHours" - ] + "event_metadata": { + "$ref": "#/definitions/datastore.Event" + }, + "event_type": { + "type": "string" + }, + "headers": { + "$ref": "#/definitions/httpheader.HTTPHeader" + }, + "idempotency_key": { + "type": "string" + }, + "latency": { + "description": "Deprecated: Latency is deprecated.", + "type": "string" + }, + "latency_seconds": { + "type": "number" + }, + "metadata": { + "$ref": "#/definitions/datastore.Metadata" + }, + "project_id": { + "type": "string" + }, + "source_metadata": { + "$ref": "#/definitions/datastore.Source" + }, + "status": { + "$ref": "#/definitions/datastore.EventDeliveryStatus" + }, + "subscription_id": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url_query_params": { + "type": "string" + } + } + }, + "models.EventResponse": { + "type": "object", + "properties": { + "acknowledged_at": { + "type": "string" + }, + "app_id": { + "description": "Deprecated", + "type": "string" + }, + "created_at": { + "type": "string" + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "type": "array", + "items": { + "type": "integer" + } }, - "datastore.OAuth2FieldMapping": { - "type": "object", - "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" - } - } + "deleted_at": { + "type": "string" }, - "datastore.OAuth2SigningKey": { - "type": "object", - "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" - } - } + "endpoint_metadata": { + "type": "array", + "items": { + "$ref": "#/definitions/datastore.Endpoint" + } }, - "datastore.PageDirection": { - "type": "string", - "enum": [ - "next", - "prev" - ], - "x-enum-varnames": [ - "Next", - "Prev" - ] + "endpoints": { + "type": "array", + "items": { + "type": "string" + } }, - "datastore.PaginationData": { - "type": "object", - "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" - } - } + "event_type": { + "type": "string" }, - "datastore.PortalAuthType": { - "type": "string", - "enum": [ - "refresh_token", - "static_token" - ], - "x-enum-varnames": [ - "PortalAuthTypeRefreshToken", - "PortalAuthTypeStaticToken" - ] + "headers": { + "$ref": "#/definitions/httpheader.HTTPHeader" }, - "datastore.PortalLinkResponse": { - "type": "object", - "properties": { - "auth_key": { - "type": "string" - }, - "auth_type": { - "$ref": "#/definitions/datastore.PortalAuthType" - }, - "can_manage_endpoint": { - "type": "boolean" - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "endpoint_count": { - "type": "integer" - }, - "endpoints": { - "type": "array", - "items": { - "type": "string" - } - }, - "endpoints_metadata": { - "type": "array", - "items": { - "$ref": "#/definitions/datastore.Endpoint" - } - }, - "name": { - "type": "string" - }, - "owner_id": { - "type": "string" - }, - "project_id": { - "type": "string" - }, - "token": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - } - } + "idempotency_key": { + "type": "string" }, - "datastore.ProviderConfig": { - "type": "object", - "properties": { - "twitter": { - "$ref": "#/definitions/datastore.TwitterProviderConfig" - } - } + "is_duplicate_event": { + "type": "boolean" }, - "datastore.PubSubConfig": { - "type": "object", - "properties": { - "amqp": { - "$ref": "#/definitions/datastore.AmqpPubSubConfig" - }, - "google": { - "$ref": "#/definitions/datastore.GooglePubSubConfig" - }, - "kafka": { - "$ref": "#/definitions/datastore.KafkaPubSubConfig" - }, - "sqs": { - "$ref": "#/definitions/datastore.SQSPubSubConfig" - }, - "type": { - "$ref": "#/definitions/datastore.PubSubType" - }, - "workers": { - "type": "integer" - } - } + "metadata": { + "type": "string" }, - "datastore.PubSubType": { - "type": "string", - "enum": [ - "sqs", - "google", - "kafka", - "amqp" - ], - "x-enum-varnames": [ - "SqsPubSub", - "GooglePubSub", - "KafkaPubSub", - "AmqpPubSub" - ] + "project_id": { + "type": "string" }, - "datastore.RateLimitConfiguration": { - "type": "object", - "properties": { - "count": { - "type": "integer" - }, - "duration": { - "type": "integer" - } - } + "raw": { + "type": "string" }, - "datastore.RetryConfiguration": { - "type": "object", - "properties": { - "duration": { - "type": "integer" - }, - "retry_count": { - "type": "integer" - }, - "type": { - "$ref": "#/definitions/datastore.StrategyProvider" - } - } + "source_id": { + "type": "string" }, - "datastore.SQSPubSubConfig": { - "type": "object", - "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" - } - } + "source_metadata": { + "$ref": "#/definitions/datastore.Source" }, - "datastore.Secret": { - "type": "object", - "properties": { - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "expires_at": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "value": { - "type": "string" - } - } + "status": { + "$ref": "#/definitions/datastore.EventStatus" }, - "datastore.Source": { - "type": "object", - "properties": { - "body_function": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "custom_response": { - "$ref": "#/definitions/datastore.CustomResponse" - }, - "deleted_at": { - "type": "string" - }, - "forward_headers": { - "type": "array", - "items": { - "type": "string" - } - }, - "header_function": { - "type": "string" - }, - "idempotency_keys": { - "type": "array", - "items": { - "type": "string" - } - }, - "is_disabled": { - "type": "boolean" - }, - "mask_id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "project_id": { - "type": "string" - }, - "provider": { - "$ref": "#/definitions/datastore.SourceProvider" - }, - "provider_config": { - "$ref": "#/definitions/datastore.ProviderConfig" - }, - "pub_sub": { - "$ref": "#/definitions/datastore.PubSubConfig" - }, - "type": { - "$ref": "#/definitions/datastore.SourceType" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - }, - "verifier": { - "$ref": "#/definitions/datastore.VerifierConfig" - } - } + "uid": { + "type": "string" }, - "datastore.SourceProvider": { - "type": "string", - "enum": [ - "github", - "twitter", - "shopify" - ], - "x-enum-varnames": [ - "GithubSourceProvider", - "TwitterSourceProvider", - "ShopifySourceProvider" - ] + "updated_at": { + "type": "string" }, - "datastore.SourceType": { - "type": "string", - "enum": [ - "http", - "rest_api", - "pub_sub", - "db_change_stream" - ], - "x-enum-varnames": [ - "HTTPSource", - "RestApiSource", - "PubSubSource", - "DBChangeStream" - ] + "url_query_params": { + "type": "string" + } + } + }, + "models.EventTypeResponse": { + "type": "object", + "properties": { + "category": { + "type": "string" }, - "datastore.StrategyProvider": { - "type": "string", - "enum": [ - "linear", - "exponential" - ], - "x-enum-varnames": [ - "LinearStrategyProvider", - "ExponentialStrategyProvider" - ] + "deprecated_at": { + "type": "string" }, - "datastore.SubscriptionType": { - "type": "string", - "enum": [ - "cli", - "api" - ], - "x-enum-varnames": [ - "SubscriptionTypeCLI", - "SubscriptionTypeAPI" - ] + "description": { + "type": "string" }, - "datastore.TwitterProviderConfig": { - "type": "object", - "properties": { - "crc_verified_at": { - "type": "string" - } - } + "json_schema": { + "type": "array", + "items": { + "type": "integer" + } }, - "datastore.UpdatePortalLinkRequest": { - "type": "object", - "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", - "type": "array", - "items": { - "type": "string" - } - }, - "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" - } - } + "name": { + "type": "string" }, - "datastore.VerifierConfig": { - "type": "object", - "properties": { - "api_key": { - "$ref": "#/definitions/datastore.ApiKey" - }, - "basic_auth": { - "$ref": "#/definitions/datastore.BasicAuth" - }, - "hmac": { - "$ref": "#/definitions/datastore.HMac" - }, - "type": { - "$ref": "#/definitions/datastore.VerifierType" - } - } + "uid": { + "type": "string" + } + } + }, + "models.ExpireSecret": { + "type": "object", + "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" + } + } + }, + "models.FS": { + "type": "object", + "properties": { + "body": { + "$ref": "#/definitions/datastore.M" + }, + "headers": { + "$ref": "#/definitions/datastore.M" + } + } + }, + "models.FanoutEvent": { + "type": "object", + "properties": { + "custom_headers": { + "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "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" + } + } + }, + "models.FilterConfiguration": { + "type": "object", + "properties": { + "event_types": { + "description": "List of event types that the subscription should match", + "type": "array", + "items": { + "type": "string" + } + }, + "filter": { + "description": "Body & Header filters", + "allOf": [ + { + "$ref": "#/definitions/models.FS" + } + ] + } + } + }, + "models.FilterResponse": { + "type": "object", + "properties": { + "body": { + "$ref": "#/definitions/datastore.M" }, - "datastore.VerifierType": { - "type": "string", - "enum": [ - "noop", - "hmac", - "basic_auth", - "api_key" - ], - "x-enum-varnames": [ - "NoopVerifier", - "HMacVerifier", - "BasicAuthVerifier", - "APIKeyVerifier" - ] + "event_type": { + "type": "string" }, - "handlers.Stub": { - "type": "object" + "headers": { + "$ref": "#/definitions/datastore.M" }, - "httpheader.HTTPHeader": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } + "raw_body": { + "$ref": "#/definitions/datastore.M" }, - "models.AlertConfiguration": { - "type": "object", - "properties": { - "count": { - "description": "Count", - "type": "integer" - }, - "threshold": { - "description": "Threshold", - "type": "string" - } - } + "raw_headers": { + "$ref": "#/definitions/datastore.M" }, - "models.AmqpAuth": { - "type": "object", - "properties": { - "password": { - "type": "string" - }, - "user": { - "type": "string" - } - } + "subscription_id": { + "type": "string" }, - "models.AmqpExchange": { - "type": "object", - "properties": { - "exchange": { - "type": "string" - }, - "routingKey": { - "type": "string" - } - } + "uid": { + "type": "string" + } + } + }, + "models.FilterSchema": { + "type": "object", + "properties": { + "body": {}, + "header": {} + } + }, + "models.FunctionRequest": { + "type": "object", + "properties": { + "function": { + "type": "string" + }, + "payload": { + "type": "object", + "additionalProperties": {} + }, + "type": { + "type": "string" + } + } + }, + "models.FunctionResponse": { + "type": "object", + "properties": { + "log": { + "type": "array", + "items": { + "type": "string" + } + }, + "payload": {} + } + }, + "models.GooglePubSubConfig": { + "type": "object", + "properties": { + "project_id": { + "type": "string" + }, + "service_account": { + "type": "array", + "items": { + "type": "integer" + } + }, + "subscription_id": { + "type": "string" + } + } + }, + "models.HMac": { + "type": "object", + "required": [ + "encoding", + "hash", + "header", + "secret" + ], + "properties": { + "encoding": { + "$ref": "#/definitions/datastore.EncodingType" + }, + "hash": { + "type": "string" + }, + "header": { + "type": "string" + }, + "secret": { + "type": "string" + } + } + }, + "models.IDs": { + "type": "object", + "properties": { + "ids": { + "description": "A list of event delivery IDs to forcefully resend.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "models.ImportOpenAPISpec": { + "type": "object", + "properties": { + "spec": { + "type": "string" + } + } + }, + "models.KafkaAuth": { + "type": "object", + "properties": { + "hash": { + "type": "string" }, - "models.AmqpPubSubconfig": { - "type": "object", - "properties": { - "auth": { - "$ref": "#/definitions/models.AmqpAuth" - }, - "bindExchange": { - "$ref": "#/definitions/models.AmqpExchange" - }, - "deadLetterExchange": { - "type": "string" - }, - "host": { - "type": "string" - }, - "port": { - "type": "string" - }, - "queue": { - "type": "string" - }, - "schema": { - "type": "string" - }, - "vhost": { - "type": "string" - } - } + "password": { + "type": "string" }, - "models.ApiKey": { - "type": "object", - "required": [ - "header_name", - "header_value" - ], - "properties": { - "header_name": { - "type": "string" - }, - "header_value": { - "type": "string" - } - } + "tls": { + "type": "boolean" }, - "models.BasicAuth": { - "type": "object", - "required": [ - "password", - "username" - ], - "properties": { - "password": { - "type": "string" - }, - "username": { - "type": "string" - } - } + "type": { + "type": "string" }, - "models.BroadcastEvent": { - "type": "object", - "properties": { - "acknowledged_at": { - "type": "string" - }, - "custom_headers": { - "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "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" - } - } + "username": { + "type": "string" + } + } + }, + "models.KafkaPubSubConfig": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/definitions/models.KafkaAuth" + }, + "brokers": { + "type": "array", + "items": { + "type": "string" + } + }, + "consumer_group_id": { + "type": "string" + }, + "topic_name": { + "type": "string" + } + } + }, + "models.MetaEventResponse": { + "type": "object", + "properties": { + "attempt": { + "$ref": "#/definitions/datastore.MetaEventAttempt" }, - "models.BulkOnboardAcceptedResponse": { - "type": "object", - "properties": { - "batch_count": { - "type": "integer" - }, - "message": { - "type": "string" - }, - "total_items": { - "type": "integer" - } - } + "created_at": { + "type": "string" }, - "models.BulkOnboardDryRunResponse": { - "type": "object", - "properties": { - "errors": { - "type": "array", - "items": { - "$ref": "#/definitions/models.OnboardValidationError" - } - }, - "total_rows": { - "type": "integer" - }, - "valid_count": { - "type": "integer" - } - } + "deleted_at": { + "type": "string" }, - "models.BulkOnboardRequest": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/definitions/models.OnboardItem" - } - } - } + "event_type": { + "type": "string" }, - "models.BulkUpdateFilterRequest": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "body": { - "type": "object", - "additionalProperties": true - }, - "event_type": { - "type": "string" - }, - "headers": { - "type": "object", - "additionalProperties": true - }, - "uid": { - "type": "string" - } - } + "metadata": { + "$ref": "#/definitions/datastore.Metadata" }, - "models.CreateEndpoint": { - "type": "object", - "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": { - "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.", - "allOf": [ - { - "$ref": "#/definitions/models.EndpointAuthentication" - } - ] - }, - "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": { - "description": "mTLS client certificate configuration for the endpoint", - "allOf": [ - { - "$ref": "#/definitions/models.MtlsClientCert" - } - ] - }, - "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" - } - } + "project_id": { + "type": "string" }, - "models.CreateEvent": { - "type": "object", - "properties": { - "app_id": { - "description": "Deprecated but necessary for backward compatibility.", - "type": "string" - }, - "custom_headers": { - "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "type": "object" - }, - "endpoint_id": { - "description": "Specifies the endpoint to send this event to.", - "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" - } - } + "status": { + "$ref": "#/definitions/datastore.EventDeliveryStatus" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + } + }, + "models.MtlsClientCert": { + "type": "object", + "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" + } + } + }, + "models.OAuth2": { + "type": "object", + "properties": { + "audience": { + "type": "string" }, - "models.CreateEventType": { - "type": "object", - "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": { - "description": "JSONSchema is the JSON structure of the event type", - "type": "object", - "additionalProperties": true - }, - "name": { - "description": "Name is the event type name. E.g., invoice.created", - "type": "string" - } - } + "authentication_type": { + "type": "string" }, - "models.CreateFilterRequest": { - "type": "object", - "required": [ - "event_type" - ], - "properties": { - "body": { - "description": "Body matching criteria (optional)", - "allOf": [ - { - "$ref": "#/definitions/datastore.M" - } - ] - }, - "event_type": { - "description": "Type of event this filter applies to (required)", - "type": "string" - }, - "headers": { - "description": "Header matching criteria (optional)", - "allOf": [ - { - "$ref": "#/definitions/datastore.M" - } - ] - } - } + "client_id": { + "type": "string" }, - "models.CreateSource": { - "type": "object", - "properties": { - "body_function": { - "description": "Function is a javascript function used to mutate the payload\nimmediately after ingesting an event", - "type": "string" - }, - "custom_response": { - "description": "Custom response is used to define a custom response for incoming\nwebhooks project sources only.", - "allOf": [ - { - "$ref": "#/definitions/models.CustomResponse" - } - ] - }, - "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.", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Source name.", - "type": "string" - }, - "provider": { - "description": "Use this to specify one of our predefined source types.", - "allOf": [ - { - "$ref": "#/definitions/datastore.SourceProvider" - } - ] - }, - "pub_sub": { - "description": "PubSub are used to specify message broker sources for outgoing\nwebhooks projects.", - "allOf": [ - { - "$ref": "#/definitions/models.PubSubConfig" - } - ] - }, - "type": { - "description": "Source Type.", - "allOf": [ - { - "$ref": "#/definitions/datastore.SourceType" - } - ] - }, - "verifier": { - "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.", - "allOf": [ - { - "$ref": "#/definitions/models.VerifierConfig" - } - ] - } - } + "client_secret": { + "type": "string" }, - "models.CreateSubscription": { - "type": "object", - "properties": { - "alert_config": { - "description": "Alert configuration", - "allOf": [ - { - "$ref": "#/definitions/models.AlertConfiguration" - } - ] - }, - "app_id": { - "description": "Deprecated but necessary for backward compatibility", - "type": "string" - }, - "delivery_mode": { - "description": "Delivery mode configuration", - "allOf": [ - { - "$ref": "#/definitions/datastore.DeliveryMode" - } - ] - }, - "endpoint_id": { - "description": "Destination endpoint ID", - "type": "string" - }, - "filter_config": { - "description": "Filter configuration", - "allOf": [ - { - "$ref": "#/definitions/models.FilterConfiguration" - } - ] - }, - "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": { - "description": "Rate limit configuration", - "allOf": [ - { - "$ref": "#/definitions/models.RateLimitConfiguration" - } - ] - }, - "source_id": { - "description": "Source Id", - "type": "string" - } - } + "expiry_time_unit": { + "description": "Expiry time unit (seconds, milliseconds, minutes, hours)", + "type": "string" }, - "models.CustomResponse": { - "type": "object", - "properties": { - "body": { - "type": "string" - }, - "content_type": { - "type": "string" - } + "field_mapping": { + "description": "Field mapping for flexible token response parsing", + "allOf": [ + { + "$ref": "#/definitions/models.OAuth2FieldMapping" } + ] }, - "models.DynamicEvent": { - "type": "object", - "properties": { - "custom_headers": { - "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "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", - "type": "array", - "items": { - "type": "string" - } - }, - "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" - } - } + "grant_type": { + "type": "string" }, - "models.EndpointAuthentication": { - "type": "object", - "properties": { - "api_key": { - "$ref": "#/definitions/models.ApiKey" - }, - "basic_auth": { - "$ref": "#/definitions/models.BasicAuth" - }, - "oauth2": { - "$ref": "#/definitions/models.OAuth2" - }, - "type": { - "$ref": "#/definitions/datastore.EndpointAuthenticationType" - } - } + "issuer": { + "type": "string" }, - "models.EndpointResponse": { - "type": "object", - "properties": { - "advanced_signatures": { - "type": "boolean" - }, - "authentication": { - "$ref": "#/definitions/datastore.EndpointAuthentication" - }, - "content_type": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "description": { - "type": "string" - }, - "events": { - "type": "integer" - }, - "failure_rate": { - "type": "number" - }, - "http_timeout": { - "type": "integer" - }, - "mtls_client_cert": { - "description": "mTLS client certificate configuration", - "allOf": [ - { - "$ref": "#/definitions/datastore.MtlsClientCert" - } - ] - }, - "name": { - "type": "string" - }, - "owner_id": { - "type": "string" - }, - "project_id": { - "type": "string" - }, - "rate_limit": { - "type": "integer" - }, - "rate_limit_duration": { - "type": "integer" - }, - "secrets": { - "type": "array", - "items": { - "$ref": "#/definitions/datastore.Secret" - } - }, - "slack_webhook_url": { - "type": "string" - }, - "status": { - "$ref": "#/definitions/datastore.EndpointStatus" - }, - "support_email": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - } - } + "scope": { + "type": "string" }, - "models.EventDeliveryResponse": { - "type": "object", - "properties": { - "acknowledged_at": { - "type": "string" - }, - "cli_metadata": { - "$ref": "#/definitions/datastore.CLIMetadata" - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "delivery_mode": { - "$ref": "#/definitions/datastore.DeliveryMode" - }, - "description": { - "type": "string" - }, - "device_id": { - "type": "string" - }, - "device_metadata": { - "$ref": "#/definitions/datastore.Device" - }, - "endpoint_id": { - "type": "string" - }, - "endpoint_metadata": { - "$ref": "#/definitions/datastore.Endpoint" - }, - "event_id": { - "type": "string" - }, - "event_metadata": { - "$ref": "#/definitions/datastore.Event" - }, - "event_type": { - "type": "string" - }, - "headers": { - "$ref": "#/definitions/httpheader.HTTPHeader" - }, - "idempotency_key": { - "type": "string" - }, - "latency": { - "description": "Deprecated: Latency is deprecated.", - "type": "string" - }, - "latency_seconds": { - "type": "number" - }, - "metadata": { - "$ref": "#/definitions/datastore.Metadata" - }, - "project_id": { - "type": "string" - }, - "source_metadata": { - "$ref": "#/definitions/datastore.Source" - }, - "status": { - "$ref": "#/definitions/datastore.EventDeliveryStatus" - }, - "subscription_id": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url_query_params": { - "type": "string" - } - } + "signing_algorithm": { + "type": "string" }, - "models.EventResponse": { - "type": "object", - "properties": { - "acknowledged_at": { - "type": "string" - }, - "app_id": { - "description": "Deprecated", - "type": "string" - }, - "created_at": { - "type": "string" - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "type": "array", - "items": { - "type": "integer" - } - }, - "deleted_at": { - "type": "string" - }, - "endpoint_metadata": { - "type": "array", - "items": { - "$ref": "#/definitions/datastore.Endpoint" - } - }, - "endpoints": { - "type": "array", - "items": { - "type": "string" - } - }, - "event_type": { - "type": "string" - }, - "headers": { - "$ref": "#/definitions/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": { - "$ref": "#/definitions/datastore.Source" - }, - "status": { - "$ref": "#/definitions/datastore.EventStatus" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url_query_params": { - "type": "string" - } - } + "signing_key": { + "$ref": "#/definitions/models.OAuth2SigningKey" }, - "models.EventTypeResponse": { - "type": "object", - "properties": { - "category": { - "type": "string" - }, - "deprecated_at": { - "type": "string" - }, - "description": { - "type": "string" - }, - "json_schema": { - "type": "array", - "items": { - "type": "integer" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } + "subject": { + "type": "string" }, - "models.ExpireSecret": { - "type": "object", - "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" - } - } + "url": { + "type": "string" + } + } + }, + "models.OAuth2FieldMapping": { + "type": "object", + "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" + } + } + }, + "models.OAuth2SigningKey": { + "type": "object", + "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" + } + } + }, + "models.OnboardItem": { + "type": "object", + "properties": { + "auth_password": { + "type": "string" }, - "models.FS": { - "type": "object", - "properties": { - "body": { - "$ref": "#/definitions/datastore.M" - }, - "headers": { - "$ref": "#/definitions/datastore.M" - } - } + "auth_username": { + "type": "string" }, - "models.FanoutEvent": { - "type": "object", - "properties": { - "custom_headers": { - "description": "Specifies custom headers you want convoy to add when the event is dispatched to your endpoint", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "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" - } - } + "event_type": { + "type": "string" }, - "models.FilterConfiguration": { - "type": "object", - "properties": { - "event_types": { - "description": "List of event types that the subscription should match", - "type": "array", - "items": { - "type": "string" - } - }, - "filter": { - "description": "Body \u0026 Header filters", - "allOf": [ - { - "$ref": "#/definitions/models.FS" - } - ] - } - } + "name": { + "type": "string" }, - "models.FilterResponse": { - "type": "object", - "properties": { - "body": { - "$ref": "#/definitions/datastore.M" - }, - "event_type": { - "type": "string" - }, - "headers": { - "$ref": "#/definitions/datastore.M" - }, - "raw_body": { - "$ref": "#/definitions/datastore.M" - }, - "raw_headers": { - "$ref": "#/definitions/datastore.M" - }, - "subscription_id": { - "type": "string" - }, - "uid": { - "type": "string" - } - } + "url": { + "type": "string" + } + } + }, + "models.OnboardValidationError": { + "type": "object", + "properties": { + "field": { + "type": "string" }, - "models.FilterSchema": { - "type": "object", - "properties": { - "body": {}, - "header": {} - } + "message": { + "type": "string" }, - "models.FunctionRequest": { - "type": "object", - "properties": { - "function": { - "type": "string" - }, - "payload": { - "type": "object", - "additionalProperties": {} - }, - "type": { - "type": "string" - } - } + "row": { + "type": "integer" + } + } + }, + "models.PagedResponse": { + "type": "object", + "properties": { + "content": {}, + "pagination": { + "allOf": [ + { + "$ref": "#/definitions/datastore.PaginationData" + } + ], + "nullable": true + } + } + }, + "models.PubSubConfig": { + "type": "object", + "properties": { + "amqp": { + "$ref": "#/definitions/models.AmqpPubSubconfig" }, - "models.FunctionResponse": { - "type": "object", - "properties": { - "log": { - "type": "array", - "items": { - "type": "string" - } - }, - "payload": {} - } + "google": { + "$ref": "#/definitions/models.GooglePubSubConfig" }, - "models.GooglePubSubConfig": { - "type": "object", - "properties": { - "project_id": { - "type": "string" - }, - "service_account": { - "type": "array", - "items": { - "type": "integer" - } - }, - "subscription_id": { - "type": "string" - } - } + "kafka": { + "$ref": "#/definitions/models.KafkaPubSubConfig" }, - "models.HMac": { - "type": "object", - "required": [ - "encoding", - "hash", - "header", - "secret" - ], - "properties": { - "encoding": { - "$ref": "#/definitions/datastore.EncodingType" - }, - "hash": { - "type": "string" - }, - "header": { - "type": "string" - }, - "secret": { - "type": "string" - } - } + "sqs": { + "$ref": "#/definitions/models.SQSPubSubConfig" }, - "models.IDs": { - "type": "object", - "properties": { - "ids": { - "description": "A list of event delivery IDs to forcefully resend.", - "type": "array", - "items": { - "type": "string" - } - } - } + "type": { + "$ref": "#/definitions/datastore.PubSubType" }, - "models.ImportOpenAPISpec": { - "type": "object", - "properties": { - "spec": { - "type": "string" - } - } + "workers": { + "type": "integer" + } + } + }, + "models.RateLimitConfiguration": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "duration": { + "type": "integer" + } + } + }, + "models.RetryConfiguration": { + "type": "object", + "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": { + "description": "Retry Strategy type", + "allOf": [ + { + "$ref": "#/definitions/datastore.StrategyProvider" + } + ] + } + } + }, + "models.SQSPubSubConfig": { + "type": "object", + "properties": { + "access_key_id": { + "type": "string" }, - "models.KafkaAuth": { - "type": "object", - "properties": { - "hash": { - "type": "string" - }, - "password": { - "type": "string" - }, - "tls": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "username": { - "type": "string" - } - } + "default_region": { + "type": "string" }, - "models.KafkaPubSubConfig": { - "type": "object", - "properties": { - "auth": { - "$ref": "#/definitions/models.KafkaAuth" - }, - "brokers": { - "type": "array", - "items": { - "type": "string" - } - }, - "consumer_group_id": { - "type": "string" - }, - "topic_name": { - "type": "string" - } - } + "queue_name": { + "type": "string" }, - "models.MetaEventResponse": { - "type": "object", - "properties": { - "attempt": { - "$ref": "#/definitions/datastore.MetaEventAttempt" - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "event_type": { - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/datastore.Metadata" - }, - "project_id": { - "type": "string" - }, - "status": { - "$ref": "#/definitions/datastore.EventDeliveryStatus" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - } - } + "secret_key": { + "type": "string" + } + } + }, + "models.SourceResponse": { + "type": "object", + "properties": { + "body_function": { + "type": "string" }, - "models.MtlsClientCert": { - "type": "object", - "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" - } - } + "created_at": { + "type": "string" + }, + "custom_response": { + "$ref": "#/definitions/datastore.CustomResponse" + }, + "deleted_at": { + "type": "string" + }, + "forward_headers": { + "type": "array", + "items": { + "type": "string" + } + }, + "header_function": { + "type": "string" + }, + "idempotency_keys": { + "type": "array", + "items": { + "type": "string" + } }, - "models.OAuth2": { - "type": "object", - "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": { - "description": "Field mapping for flexible token response parsing", - "allOf": [ - { - "$ref": "#/definitions/models.OAuth2FieldMapping" - } - ] - }, - "grant_type": { - "type": "string" - }, - "issuer": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "signing_algorithm": { - "type": "string" - }, - "signing_key": { - "$ref": "#/definitions/models.OAuth2SigningKey" - }, - "subject": { - "type": "string" - }, - "url": { - "type": "string" - } - } + "is_disabled": { + "type": "boolean" }, - "models.OAuth2FieldMapping": { - "type": "object", - "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" - } - } + "mask_id": { + "type": "string" }, - "models.OAuth2SigningKey": { - "type": "object", - "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" - } - } + "name": { + "type": "string" }, - "models.OnboardItem": { - "type": "object", - "properties": { - "auth_password": { - "type": "string" - }, - "auth_username": { - "type": "string" - }, - "event_type": { - "type": "string" - }, - "name": { - "type": "string" - }, - "url": { - "type": "string" - } - } + "project_id": { + "type": "string" }, - "models.OnboardValidationError": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "message": { - "type": "string" - }, - "row": { - "type": "integer" - } - } + "provider": { + "$ref": "#/definitions/datastore.SourceProvider" }, - "models.PagedResponse": { - "type": "object", - "properties": { - "content": {}, - "pagination": { - "$ref": "#/definitions/datastore.PaginationData" - } - } + "provider_config": { + "$ref": "#/definitions/datastore.ProviderConfig" }, - "models.PubSubConfig": { - "type": "object", - "properties": { - "amqp": { - "$ref": "#/definitions/models.AmqpPubSubconfig" - }, - "google": { - "$ref": "#/definitions/models.GooglePubSubConfig" - }, - "kafka": { - "$ref": "#/definitions/models.KafkaPubSubConfig" - }, - "sqs": { - "$ref": "#/definitions/models.SQSPubSubConfig" - }, - "type": { - "$ref": "#/definitions/datastore.PubSubType" - }, - "workers": { - "type": "integer" - } - } + "pub_sub": { + "$ref": "#/definitions/datastore.PubSubConfig" }, - "models.RateLimitConfiguration": { - "type": "object", - "properties": { - "count": { - "type": "integer" - }, - "duration": { - "type": "integer" - } - } + "type": { + "$ref": "#/definitions/datastore.SourceType" }, - "models.RetryConfiguration": { - "type": "object", - "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": { - "description": "Retry Strategy type", - "allOf": [ - { - "$ref": "#/definitions/datastore.StrategyProvider" - } - ] - } - } + "uid": { + "type": "string" }, - "models.SQSPubSubConfig": { - "type": "object", - "properties": { - "access_key_id": { - "type": "string" - }, - "default_region": { - "type": "string" - }, - "queue_name": { - "type": "string" - }, - "secret_key": { - "type": "string" - } - } + "updated_at": { + "type": "string" }, - "models.SourceResponse": { - "type": "object", - "properties": { - "body_function": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "custom_response": { - "$ref": "#/definitions/datastore.CustomResponse" - }, - "deleted_at": { - "type": "string" - }, - "forward_headers": { - "type": "array", - "items": { - "type": "string" - } - }, - "header_function": { - "type": "string" - }, - "idempotency_keys": { - "type": "array", - "items": { - "type": "string" - } - }, - "is_disabled": { - "type": "boolean" - }, - "mask_id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "project_id": { - "type": "string" - }, - "provider": { - "$ref": "#/definitions/datastore.SourceProvider" - }, - "provider_config": { - "$ref": "#/definitions/datastore.ProviderConfig" - }, - "pub_sub": { - "$ref": "#/definitions/datastore.PubSubConfig" - }, - "type": { - "$ref": "#/definitions/datastore.SourceType" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - }, - "verifier": { - "$ref": "#/definitions/datastore.VerifierConfig" - } - } + "url": { + "type": "string" }, - "models.SubscriptionResponse": { - "type": "object", - "properties": { - "alert_config": { - "description": "subscription config", - "allOf": [ - { - "$ref": "#/definitions/datastore.AlertConfiguration" - } - ] - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "delivery_mode": { - "$ref": "#/definitions/datastore.DeliveryMode" - }, - "device_metadata": { - "$ref": "#/definitions/datastore.Device" - }, - "endpoint_metadata": { - "$ref": "#/definitions/datastore.Endpoint" - }, - "filter_config": { - "$ref": "#/definitions/datastore.FilterConfiguration" - }, - "function": { - "type": "string" - }, - "name": { - "type": "string" - }, - "project_id": { - "type": "string" - }, - "rate_limit_config": { - "$ref": "#/definitions/datastore.RateLimitConfiguration" - }, - "retry_config": { - "$ref": "#/definitions/datastore.RetryConfiguration" - }, - "source_metadata": { - "$ref": "#/definitions/datastore.Source" - }, - "type": { - "$ref": "#/definitions/datastore.SubscriptionType" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - } + "verifier": { + "$ref": "#/definitions/datastore.VerifierConfig" + } + } + }, + "models.SubscriptionResponse": { + "type": "object", + "properties": { + "alert_config": { + "description": "subscription config", + "allOf": [ + { + "$ref": "#/definitions/datastore.AlertConfiguration" } + ] }, - "models.TestFilter": { - "type": "object", - "properties": { - "request": { - "description": "Same Request \u0026 Headers", - "allOf": [ - { - "$ref": "#/definitions/models.FilterSchema" - } - ] - }, - "schema": { - "description": "Sample test schema", - "allOf": [ - { - "$ref": "#/definitions/models.FilterSchema" - } - ] - } - } + "created_at": { + "type": "string" }, - "models.TestFilterRequest": { - "type": "object", - "required": [ - "payload" - ], - "properties": { - "payload": { - "description": "Sample payload to test against the filter (required)" - } - } + "deleted_at": { + "type": "string" }, - "models.TestFilterResponse": { - "type": "object", - "properties": { - "is_match": { - "description": "Whether the payload matches the filter criteria", - "type": "boolean" - } - } + "delivery_mode": { + "$ref": "#/definitions/datastore.DeliveryMode" }, - "models.TestOAuth2Request": { - "type": "object", - "properties": { - "oauth2": { - "$ref": "#/definitions/models.OAuth2" - } - } + "device_metadata": { + "$ref": "#/definitions/datastore.Device" }, - "models.TestOAuth2Response": { - "type": "object", - "properties": { - "access_token": { - "type": "string" - }, - "error": { - "type": "string" - }, - "expires_at": { - "type": "string" - }, - "message": { - "type": "string" - }, - "success": { - "type": "boolean" - }, - "token_type": { - "type": "string" - } - } + "endpoint_metadata": { + "$ref": "#/definitions/datastore.Endpoint" }, - "models.UpdateCustomResponse": { - "type": "object", - "properties": { - "body": { - "type": "string" - }, - "content_type": { - "type": "string" - } - } + "filter_config": { + "$ref": "#/definitions/datastore.FilterConfiguration" }, - "models.UpdateEndpoint": { - "type": "object", - "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": { - "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.", - "allOf": [ - { - "$ref": "#/definitions/models.EndpointAuthentication" - } - ] - }, - "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": { - "description": "mTLS client certificate configuration for the endpoint", - "allOf": [ - { - "$ref": "#/definitions/models.MtlsClientCert" - } - ] - }, - "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" - } - } + "function": { + "type": "string" }, - "models.UpdateEventType": { - "type": "object", - "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": { - "description": "JSONSchema is the JSON structure of the event type", - "type": "object", - "additionalProperties": true - } - } + "name": { + "type": "string" }, - "models.UpdateFilterRequest": { - "type": "object", - "properties": { - "body": { - "description": "Body matching criteria (optional)", - "allOf": [ - { - "$ref": "#/definitions/datastore.M" - } - ] - }, - "event_type": { - "description": "Type of event this filter applies to (optional)", - "type": "string" - }, - "headers": { - "description": "Header matching criteria (optional)", - "allOf": [ - { - "$ref": "#/definitions/datastore.M" - } - ] - }, - "is_flattened": { - "description": "Whether the filter uses flattened JSON paths (optional)", - "type": "boolean" - } - } + "project_id": { + "type": "string" }, - "models.UpdateSource": { - "type": "object", - "properties": { - "body_function": { - "description": "Function is a javascript function used to mutate the payload\nimmediately after ingesting an event", - "type": "string" - }, - "custom_response": { - "description": "Custom response is used to define a custom response for incoming\nwebhooks project sources only.", - "allOf": [ - { - "$ref": "#/definitions/models.UpdateCustomResponse" - } - ] - }, - "forward_headers": { - "description": "Soecfy header you want convoy to save from the ingest request and forward to your endpoints when the event is dispatched.", - "type": "array", - "items": { - "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.", - "type": "array", - "items": { - "type": "string" - } - }, - "is_disabled": { - "description": "This is used to manually enable/disable the source.", - "type": "boolean" - }, - "name": { - "description": "Source name.", - "type": "string" - }, - "pub_sub": { - "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`.", - "allOf": [ - { - "$ref": "#/definitions/models.PubSubConfig" - } - ] - }, - "type": { - "description": "Source Type.", - "allOf": [ - { - "$ref": "#/definitions/datastore.SourceType" - } - ] - }, - "verifier": { - "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.", - "allOf": [ - { - "$ref": "#/definitions/models.VerifierConfig" - } - ] - } - } + "rate_limit_config": { + "$ref": "#/definitions/datastore.RateLimitConfiguration" }, - "models.UpdateSubscription": { - "type": "object", - "properties": { - "alert_config": { - "description": "Alert configuration", - "allOf": [ - { - "$ref": "#/definitions/models.AlertConfiguration" - } - ] - }, - "app_id": { - "description": "Deprecated but necessary for backward compatibility", - "type": "string" - }, - "delivery_mode": { - "description": "Delivery mode configuration", - "allOf": [ - { - "$ref": "#/definitions/datastore.DeliveryMode" - } - ] - }, - "endpoint_id": { - "description": "Destination endpoint ID", - "type": "string" - }, - "filter_config": { - "description": "Filter configuration", - "allOf": [ - { - "$ref": "#/definitions/models.FilterConfiguration" - } - ] - }, - "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": { - "description": "Rate limit configuration", - "allOf": [ - { - "$ref": "#/definitions/models.RateLimitConfiguration" - } - ] - }, - "retry_config": { - "description": "Retry configuration", - "allOf": [ - { - "$ref": "#/definitions/models.RetryConfiguration" - } - ] - }, - "source_id": { - "description": "Source Id", - "type": "string" - } - } + "retry_config": { + "$ref": "#/definitions/datastore.RetryConfiguration" }, - "models.VerifierConfig": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "api_key": { - "$ref": "#/definitions/models.ApiKey" - }, - "basic_auth": { - "$ref": "#/definitions/models.BasicAuth" - }, - "hmac": { - "$ref": "#/definitions/models.HMac" - }, - "type": { - "$ref": "#/definitions/datastore.VerifierType" - } - } + "source_metadata": { + "$ref": "#/definitions/datastore.Source" }, - "util.ServerResponse": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "status": { - "type": "boolean" - } - } + "type": { + "$ref": "#/definitions/datastore.SubscriptionType" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" } + } }, - "securityDefinitions": { - "ApiKeyAuth": { - "type": "apiKey", - "name": "Authorization", - "in": "header" + "models.TestFilter": { + "type": "object", + "properties": { + "request": { + "description": "Same Request & Headers", + "allOf": [ + { + "$ref": "#/definitions/models.FilterSchema" + } + ] + }, + "schema": { + "description": "Sample test schema", + "allOf": [ + { + "$ref": "#/definitions/models.FilterSchema" + } + ] } + } }, - "tags": [ - { - "description": "Organisation related APIs", - "name": "Organisations" - }, - { - "description": "Subscription related APIs", - "name": "Subscriptions" - }, - { - "description": "Endpoint related APIs", - "name": "Endpoints" - }, - { - "description": "Event related APIs", - "name": "Events" - }, - { - "description": "Source related APIs", - "name": "Sources" + "models.TestFilterRequest": { + "type": "object", + "required": [ + "payload" + ], + "properties": { + "payload": { + "description": "Sample payload to test against the filter (required)" + } + } + }, + "models.TestFilterResponse": { + "type": "object", + "properties": { + "is_match": { + "description": "Whether the payload matches the filter criteria", + "type": "boolean" + } + } + }, + "models.TestOAuth2Request": { + "type": "object", + "properties": { + "oauth2": { + "$ref": "#/definitions/models.OAuth2" + } + } + }, + "models.TestOAuth2Response": { + "type": "object", + "properties": { + "access_token": { + "type": "string" }, - { - "description": "EventDelivery related APIs", - "name": "Event Deliveries" + "error": { + "type": "string" }, - { - "description": "Delivery Attempt related APIs", - "name": "Delivery Attempts" + "expires_at": { + "type": "string" }, - { - "description": "Project related APIs", - "name": "Projects" + "message": { + "type": "string" }, - { - "description": "Portal Links related APIs", - "name": "Portal Links" + "success": { + "type": "boolean" }, - { - "description": "Meta Events related APIs", - "name": "Meta Events" + "token_type": { + "type": "string" + } + } + }, + "models.UpdateCustomResponse": { + "type": "object", + "properties": { + "body": { + "type": "string", + "nullable": true + }, + "content_type": { + "type": "string", + "nullable": true + } + } + }, + "models.UpdateEndpoint": { + "type": "object", + "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": { + "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.", + "allOf": [ + { + "$ref": "#/definitions/models.EndpointAuthentication" + } + ] + }, + "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": { + "description": "mTLS client certificate configuration for the endpoint", + "allOf": [ + { + "$ref": "#/definitions/models.MtlsClientCert" + } + ] + }, + "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" + } + } + }, + "models.UpdateEventType": { + "type": "object", + "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": { + "description": "JSONSchema is the JSON structure of the event type", + "type": "object", + "additionalProperties": true + } + } + }, + "models.UpdateFilterRequest": { + "type": "object", + "properties": { + "body": { + "description": "Body matching criteria (optional)", + "allOf": [ + { + "$ref": "#/definitions/datastore.M" + } + ] + }, + "event_type": { + "description": "Type of event this filter applies to (optional)", + "type": "string" + }, + "headers": { + "description": "Header matching criteria (optional)", + "allOf": [ + { + "$ref": "#/definitions/datastore.M" + } + ] + }, + "is_flattened": { + "description": "Whether the filter uses flattened JSON paths (optional)", + "type": "boolean" + } + } + }, + "models.UpdateSource": { + "type": "object", + "properties": { + "body_function": { + "description": "Function is a javascript function used to mutate the payload\nimmediately after ingesting an event", + "type": "string" + }, + "custom_response": { + "description": "Custom response is used to define a custom response for incoming\nwebhooks project sources only.", + "allOf": [ + { + "$ref": "#/definitions/models.UpdateCustomResponse" + } + ] + }, + "forward_headers": { + "description": "Soecfy header you want convoy to save from the ingest request and forward to your endpoints when the event is dispatched.", + "type": "array", + "items": { + "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.", + "type": "array", + "items": { + "type": "string" + } + }, + "is_disabled": { + "description": "This is used to manually enable/disable the source.", + "type": "boolean" + }, + "name": { + "description": "Source name.", + "type": "string" + }, + "pub_sub": { + "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`.", + "allOf": [ + { + "$ref": "#/definitions/models.PubSubConfig" + } + ] + }, + "type": { + "description": "Source Type.", + "allOf": [ + { + "$ref": "#/definitions/datastore.SourceType" + } + ] + }, + "verifier": { + "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.", + "allOf": [ + { + "$ref": "#/definitions/models.VerifierConfig" + } + ] } - ] -} \ No newline at end of file + } + }, + "models.UpdateSubscription": { + "type": "object", + "properties": { + "alert_config": { + "description": "Alert configuration", + "allOf": [ + { + "$ref": "#/definitions/models.AlertConfiguration" + } + ] + }, + "app_id": { + "description": "Deprecated but necessary for backward compatibility", + "type": "string" + }, + "delivery_mode": { + "description": "Delivery mode configuration", + "allOf": [ + { + "$ref": "#/definitions/datastore.DeliveryMode" + } + ] + }, + "endpoint_id": { + "description": "Destination endpoint ID", + "type": "string" + }, + "filter_config": { + "description": "Filter configuration", + "allOf": [ + { + "$ref": "#/definitions/models.FilterConfiguration" + } + ] + }, + "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": { + "description": "Rate limit configuration", + "allOf": [ + { + "$ref": "#/definitions/models.RateLimitConfiguration" + } + ] + }, + "retry_config": { + "description": "Retry configuration", + "allOf": [ + { + "$ref": "#/definitions/models.RetryConfiguration" + } + ] + }, + "source_id": { + "description": "Source Id", + "type": "string" + } + } + }, + "models.VerifierConfig": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "api_key": { + "$ref": "#/definitions/models.ApiKey" + }, + "basic_auth": { + "$ref": "#/definitions/models.BasicAuth" + }, + "hmac": { + "$ref": "#/definitions/models.HMac" + }, + "type": { + "$ref": "#/definitions/datastore.VerifierType" + } + } + }, + "util.ServerResponse": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "status": { + "type": "boolean" + } + } + } + }, + "securityDefinitions": { + "ApiKeyAuth": { + "type": "apiKey", + "name": "Authorization", + "in": "header" + } + }, + "tags": [ + { + "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" + } + ], + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ] +} diff --git a/docs/swagger.yaml b/docs/swagger.yaml index c876addab0..abff18e394 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -61,8 +61,7 @@ definitions: auth_type: type: string can_manage_endpoint: - description: Specify whether endpoint management can be done through the Portal - Link UI + description: Specify whether endpoint management can be done through the Portal Link UI type: boolean endpoints: description: |- @@ -75,8 +74,7 @@ definitions: description: Portal Link Name type: string owner_id: - description: OwnerID, the portal link will inherit all the endpoints with - this owner ID + description: OwnerID, the portal link will inherit all the endpoints with this owner ID type: string type: object datastore.CustomResponse: @@ -125,12 +123,12 @@ definitions: type: object datastore.DeliveryMode: enum: - - at_least_once - - at_most_once + - at_least_once + - at_most_once type: string x-enum-varnames: - - AtLeastOnceDeliveryMode - - AtMostOnceDeliveryMode + - AtLeastOnceDeliveryMode + - AtMostOnceDeliveryMode datastore.Device: properties: created_at: @@ -154,22 +152,22 @@ definitions: type: object datastore.DeviceStatus: enum: - - offline - - online - - disabled + - offline + - online + - disabled type: string x-enum-varnames: - - DeviceStatusOffline - - DeviceStatusOnline - - DeviceStatusDisabled + - DeviceStatusOffline + - DeviceStatusOnline + - DeviceStatusDisabled datastore.EncodingType: enum: - - base64 - - hex + - base64 + - hex type: string x-enum-varnames: - - Base64Encoding - - HexEncoding + - Base64Encoding + - HexEncoding datastore.Endpoint: properties: advanced_signatures: @@ -192,7 +190,7 @@ definitions: type: integer mtls_client_cert: allOf: - - $ref: '#/definitions/datastore.MtlsClientCert' + - $ref: '#/definitions/datastore.MtlsClientCert' description: mTLS client certificate configuration name: type: string @@ -234,24 +232,24 @@ definitions: type: object datastore.EndpointAuthenticationType: enum: - - api_key - - oauth2 - - basic_auth + - api_key + - oauth2 + - basic_auth type: string x-enum-varnames: - - APIKeyAuthentication - - OAuth2Authentication - - BasicAuthentication + - APIKeyAuthentication + - OAuth2Authentication + - BasicAuthentication datastore.EndpointStatus: enum: - - active - - inactive - - paused + - active + - inactive + - paused type: string x-enum-varnames: - - ActiveEndpointStatus - - InactiveEndpointStatus - - PausedEndpointStatus + - ActiveEndpointStatus + - InactiveEndpointStatus + - PausedEndpointStatus datastore.Event: properties: acknowledged_at: @@ -307,34 +305,34 @@ definitions: type: object datastore.EventDeliveryStatus: enum: - - Scheduled - - Processing - - Discarded - - Failure - - Success - - Retry + - Scheduled + - Processing + - Discarded + - Failure + - Success + - Retry type: string x-enum-varnames: - - ScheduledEventStatus - - ProcessingEventStatus - - DiscardedEventStatus - - FailureEventStatus - - SuccessEventStatus - - RetryEventStatus + - ScheduledEventStatus + - ProcessingEventStatus + - DiscardedEventStatus + - FailureEventStatus + - SuccessEventStatus + - RetryEventStatus datastore.EventStatus: enum: - - Processing - - Failure - - Success - - Retry - - Pending + - Processing + - Failure + - Success + - Retry + - Pending type: string x-enum-varnames: - - ProcessingStatus - - FailureStatus - - SuccessStatus - - RetryStatus - - PendingStatus + - ProcessingStatus + - FailureStatus + - SuccessStatus + - RetryStatus + - PendingStatus datastore.FilterConfiguration: properties: event_types: @@ -464,11 +462,11 @@ definitions: type: string expiry_time_unit: allOf: - - $ref: '#/definitions/datastore.OAuth2ExpiryTimeUnit' + - $ref: '#/definitions/datastore.OAuth2ExpiryTimeUnit' description: Expiry time unit (seconds, milliseconds, minutes, hours) field_mapping: allOf: - - $ref: '#/definitions/datastore.OAuth2FieldMapping' + - $ref: '#/definitions/datastore.OAuth2FieldMapping' description: Field mapping for flexible token response parsing grant_type: type: string @@ -480,7 +478,7 @@ definitions: type: string signing_key: allOf: - - $ref: '#/definitions/datastore.OAuth2SigningKey' + - $ref: '#/definitions/datastore.OAuth2SigningKey' description: Encrypted at rest subject: type: string @@ -489,33 +487,31 @@ definitions: type: object datastore.OAuth2AuthenticationType: enum: - - shared_secret - - client_assertion + - shared_secret + - client_assertion type: string x-enum-varnames: - - SharedSecretAuth - - ClientAssertionAuth + - SharedSecretAuth + - ClientAssertionAuth datastore.OAuth2ExpiryTimeUnit: enum: - - seconds - - milliseconds - - minutes - - hours + - seconds + - milliseconds + - minutes + - hours type: string x-enum-varnames: - - ExpiryTimeUnitSeconds - - ExpiryTimeUnitMilliseconds - - ExpiryTimeUnitMinutes - - ExpiryTimeUnitHours + - ExpiryTimeUnitSeconds + - ExpiryTimeUnitMilliseconds + - ExpiryTimeUnitMinutes + - ExpiryTimeUnitHours datastore.OAuth2FieldMapping: properties: access_token: - description: Field name for access token (e.g., "accessToken", "access_token", - "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") + 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") @@ -565,12 +561,12 @@ definitions: type: object datastore.PageDirection: enum: - - next - - prev + - next + - prev type: string x-enum-varnames: - - Next - - Prev + - Next + - Prev datastore.PaginationData: properties: has_next_page: @@ -586,12 +582,12 @@ definitions: type: object datastore.PortalAuthType: enum: - - refresh_token - - static_token + - refresh_token + - static_token type: string x-enum-varnames: - - PortalAuthTypeRefreshToken - - PortalAuthTypeStaticToken + - PortalAuthTypeRefreshToken + - PortalAuthTypeStaticToken datastore.PortalLinkResponse: properties: auth_key: @@ -651,16 +647,16 @@ definitions: type: object datastore.PubSubType: enum: - - sqs - - google - - kafka - - amqp + - sqs + - google + - kafka + - amqp type: string x-enum-varnames: - - SqsPubSub - - GooglePubSub - - KafkaPubSub - - AmqpPubSub + - SqsPubSub + - GooglePubSub + - KafkaPubSub + - AmqpPubSub datastore.RateLimitConfiguration: properties: count: @@ -753,42 +749,42 @@ definitions: type: object datastore.SourceProvider: enum: - - github - - twitter - - shopify + - github + - twitter + - shopify type: string x-enum-varnames: - - GithubSourceProvider - - TwitterSourceProvider - - ShopifySourceProvider + - GithubSourceProvider + - TwitterSourceProvider + - ShopifySourceProvider datastore.SourceType: enum: - - http - - rest_api - - pub_sub - - db_change_stream + - http + - rest_api + - pub_sub + - db_change_stream type: string x-enum-varnames: - - HTTPSource - - RestApiSource - - PubSubSource - - DBChangeStream + - HTTPSource + - RestApiSource + - PubSubSource + - DBChangeStream datastore.StrategyProvider: enum: - - linear - - exponential + - linear + - exponential type: string x-enum-varnames: - - LinearStrategyProvider - - ExponentialStrategyProvider + - LinearStrategyProvider + - ExponentialStrategyProvider datastore.SubscriptionType: enum: - - cli - - api + - cli + - api type: string x-enum-varnames: - - SubscriptionTypeCLI - - SubscriptionTypeAPI + - SubscriptionTypeCLI + - SubscriptionTypeAPI datastore.TwitterProviderConfig: properties: crc_verified_at: @@ -799,8 +795,7 @@ definitions: auth_type: type: string can_manage_endpoint: - description: Specify whether endpoint management can be done through the Portal - Link UI + description: Specify whether endpoint management can be done through the Portal Link UI type: boolean endpoints: description: |- @@ -813,8 +808,7 @@ definitions: description: Portal Link Name type: string owner_id: - description: OwnerID, the portal link will inherit all the endpoints with - this owner ID + description: OwnerID, the portal link will inherit all the endpoints with this owner ID type: string type: object datastore.VerifierConfig: @@ -830,16 +824,16 @@ definitions: type: object datastore.VerifierType: enum: - - noop - - hmac - - basic_auth - - api_key + - noop + - hmac + - basic_auth + - api_key type: string x-enum-varnames: - - NoopVerifier - - HMacVerifier - - BasicAuthVerifier - - APIKeyVerifier + - NoopVerifier + - HMacVerifier + - BasicAuthVerifier + - APIKeyVerifier handlers.Stub: type: object httpheader.HTTPHeader: @@ -897,8 +891,8 @@ definitions: header_value: type: string required: - - header_name - - header_value + - header_name + - header_value type: object models.BasicAuth: properties: @@ -907,8 +901,8 @@ definitions: username: type: string required: - - password - - username + - password + - username type: object models.BroadcastEvent: properties: @@ -917,8 +911,7 @@ definitions: custom_headers: additionalProperties: type: string - description: Specifies custom headers you want convoy to add when the event - is dispatched to your endpoint + description: Specifies custom headers you want convoy to add when the event is dispatched to your endpoint type: object data: description: |- @@ -972,7 +965,7 @@ definitions: uid: type: string required: - - uid + - uid type: object models.CreateEndpoint: properties: @@ -986,14 +979,13 @@ definitions: type: string authentication: allOf: - - $ref: '#/definitions/models.EndpointAuthentication' + - $ref: '#/definitions/models.EndpointAuthentication' description: |- This is used to define any custom authentication required by the endpoint. This shouldn't be needed often because webhook endpoints usually should be exposed to the internet. content_type: - description: Content type for the endpoint. Defaults to application/json if - not specified. + description: Content type for the endpoint. Defaults to application/json if not specified. type: string description: description: |- @@ -1008,7 +1000,7 @@ definitions: type: boolean mtls_client_cert: allOf: - - $ref: '#/definitions/models.MtlsClientCert' + - $ref: '#/definitions/models.MtlsClientCert' description: mTLS client certificate configuration for the endpoint name: description: Endpoint name. @@ -1027,8 +1019,7 @@ definitions: 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. + description: Endpoint's webhook secret. If not provided, Convoy autogenerates one for the endpoint. type: string slack_webhook_url: description: |- @@ -1054,8 +1045,7 @@ definitions: custom_headers: additionalProperties: type: string - description: Specifies custom headers you want convoy to add when the event - is dispatched to your endpoint + description: Specifies custom headers you want convoy to add when the event is dispatched to your endpoint type: object data: description: |- @@ -1092,17 +1082,17 @@ definitions: properties: body: allOf: - - $ref: '#/definitions/datastore.M' + - $ref: '#/definitions/datastore.M' description: Body matching criteria (optional) event_type: description: Type of event this filter applies to (required) type: string headers: allOf: - - $ref: '#/definitions/datastore.M' + - $ref: '#/definitions/datastore.M' description: Header matching criteria (optional) required: - - event_type + - event_type type: object models.CreateSource: properties: @@ -1113,7 +1103,7 @@ definitions: type: string custom_response: allOf: - - $ref: '#/definitions/models.CustomResponse' + - $ref: '#/definitions/models.CustomResponse' description: |- Custom response is used to define a custom response for incoming webhooks project sources only. @@ -1134,21 +1124,21 @@ definitions: type: string provider: allOf: - - $ref: '#/definitions/datastore.SourceProvider' + - $ref: '#/definitions/datastore.SourceProvider' description: Use this to specify one of our predefined source types. pub_sub: allOf: - - $ref: '#/definitions/models.PubSubConfig' + - $ref: '#/definitions/models.PubSubConfig' description: |- PubSub are used to specify message broker sources for outgoing webhooks projects. type: allOf: - - $ref: '#/definitions/datastore.SourceType' + - $ref: '#/definitions/datastore.SourceType' description: Source Type. verifier: allOf: - - $ref: '#/definitions/models.VerifierConfig' + - $ref: '#/definitions/models.VerifierConfig' description: |- Verifiers are used to verify webhook events ingested in incoming webhooks projects. If set, type is required and match the verifier @@ -1158,21 +1148,21 @@ definitions: properties: alert_config: allOf: - - $ref: '#/definitions/models.AlertConfiguration' + - $ref: '#/definitions/models.AlertConfiguration' description: Alert configuration app_id: description: Deprecated but necessary for backward compatibility type: string delivery_mode: allOf: - - $ref: '#/definitions/datastore.DeliveryMode' + - $ref: '#/definitions/datastore.DeliveryMode' description: Delivery mode configuration endpoint_id: description: Destination endpoint ID type: string filter_config: allOf: - - $ref: '#/definitions/models.FilterConfiguration' + - $ref: '#/definitions/models.FilterConfiguration' description: Filter configuration function: description: |- @@ -1184,7 +1174,7 @@ definitions: type: string rate_limit_config: allOf: - - $ref: '#/definitions/models.RateLimitConfiguration' + - $ref: '#/definitions/models.RateLimitConfiguration' description: Rate limit configuration source_id: description: Source Id @@ -1202,8 +1192,7 @@ definitions: custom_headers: additionalProperties: type: string - description: Specifies custom headers you want convoy to add when the event - is dispatched to your endpoint + description: Specifies custom headers you want convoy to add when the event is dispatched to your endpoint type: object data: description: |- @@ -1222,8 +1211,7 @@ definitions: description: Specify a key for event deduplication type: string secret: - description: Endpoint's webhook secret. If not provided, Convoy autogenerates - one for the endpoint. + description: Endpoint's webhook secret. If not provided, Convoy autogenerates one for the endpoint. type: string url: description: |- @@ -1264,7 +1252,7 @@ definitions: type: integer mtls_client_cert: allOf: - - $ref: '#/definitions/datastore.MtlsClientCert' + - $ref: '#/definitions/datastore.MtlsClientCert' description: mTLS client certificate configuration name: type: string @@ -1441,8 +1429,7 @@ definitions: custom_headers: additionalProperties: type: string - description: Specifies custom headers you want convoy to add when the event - is dispatched to your endpoint + description: Specifies custom headers you want convoy to add when the event is dispatched to your endpoint type: object data: description: |- @@ -1456,8 +1443,7 @@ definitions: description: Specify a key for event deduplication type: string owner_id: - description: Used for fanout, sends this event to all endpoints with this - OwnerID. + description: Used for fanout, sends this event to all endpoints with this OwnerID. type: string type: object models.FilterConfiguration: @@ -1469,7 +1455,7 @@ definitions: type: array filter: allOf: - - $ref: '#/definitions/models.FS' + - $ref: '#/definitions/models.FS' description: Body & Header filters type: object models.FilterResponse: @@ -1534,10 +1520,10 @@ definitions: secret: type: string required: - - encoding - - hash - - header - - secret + - encoding + - hash + - header + - secret type: object models.IDs: properties: @@ -1623,7 +1609,7 @@ definitions: type: string field_mapping: allOf: - - $ref: '#/definitions/models.OAuth2FieldMapping' + - $ref: '#/definitions/models.OAuth2FieldMapping' description: Field mapping for flexible token response parsing grant_type: type: string @@ -1643,12 +1629,10 @@ definitions: models.OAuth2FieldMapping: properties: access_token: - description: Field name for access token (e.g., "accessToken", "access_token", - "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") + 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") @@ -1722,7 +1706,9 @@ definitions: properties: content: {} pagination: - $ref: '#/definitions/datastore.PaginationData' + allOf: + - $ref: '#/definitions/datastore.PaginationData' + nullable: true type: object models.PubSubConfig: properties: @@ -1749,19 +1735,17 @@ definitions: 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 + 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, + 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: '#/definitions/datastore.StrategyProvider' + - $ref: '#/definitions/datastore.StrategyProvider' description: Retry Strategy type type: object models.SQSPubSubConfig: @@ -1824,7 +1808,7 @@ definitions: properties: alert_config: allOf: - - $ref: '#/definitions/datastore.AlertConfiguration' + - $ref: '#/definitions/datastore.AlertConfiguration' description: subscription config created_at: type: string @@ -1861,11 +1845,11 @@ definitions: properties: request: allOf: - - $ref: '#/definitions/models.FilterSchema' + - $ref: '#/definitions/models.FilterSchema' description: Same Request & Headers schema: allOf: - - $ref: '#/definitions/models.FilterSchema' + - $ref: '#/definitions/models.FilterSchema' description: Sample test schema type: object models.TestFilterRequest: @@ -1873,7 +1857,7 @@ definitions: payload: description: Sample payload to test against the filter (required) required: - - payload + - payload type: object models.TestFilterResponse: properties: @@ -1905,8 +1889,10 @@ definitions: properties: body: type: string + nullable: true content_type: type: string + nullable: true type: object models.UpdateEndpoint: properties: @@ -1917,14 +1903,13 @@ definitions: type: boolean authentication: allOf: - - $ref: '#/definitions/models.EndpointAuthentication' + - $ref: '#/definitions/models.EndpointAuthentication' description: |- This is used to define any custom authentication required by the endpoint. This shouldn't be needed often because webhook endpoints usually should be exposed to the internet. content_type: - description: Content type for the endpoint. Defaults to application/json if - not specified. + description: Content type for the endpoint. Defaults to application/json if not specified. type: string description: description: |- @@ -1939,7 +1924,7 @@ definitions: type: boolean mtls_client_cert: allOf: - - $ref: '#/definitions/models.MtlsClientCert' + - $ref: '#/definitions/models.MtlsClientCert' description: mTLS client certificate configuration for the endpoint name: type: string @@ -1957,8 +1942,7 @@ definitions: 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. + description: Endpoint's webhook secret. If not provided, Convoy autogenerates one for the endpoint. type: string slack_webhook_url: description: |- @@ -1993,14 +1977,14 @@ definitions: properties: body: allOf: - - $ref: '#/definitions/datastore.M' + - $ref: '#/definitions/datastore.M' description: Body matching criteria (optional) event_type: description: Type of event this filter applies to (optional) type: string headers: allOf: - - $ref: '#/definitions/datastore.M' + - $ref: '#/definitions/datastore.M' description: Header matching criteria (optional) is_flattened: description: Whether the filter uses flattened JSON paths (optional) @@ -2015,13 +1999,12 @@ definitions: type: string custom_response: allOf: - - $ref: '#/definitions/models.UpdateCustomResponse' + - $ref: '#/definitions/models.UpdateCustomResponse' description: |- Custom response is used to define a custom response for incoming webhooks project sources only. forward_headers: - description: Soecfy header you want convoy to save from the ingest request - and forward to your endpoints when the event is dispatched. + 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 @@ -2045,17 +2028,17 @@ definitions: type: string pub_sub: allOf: - - $ref: '#/definitions/models.PubSubConfig' + - $ref: '#/definitions/models.PubSubConfig' description: |- PubSub are used to specify message broker sources for outgoing webhooks projects, you only need to specify this when the source type is `pub_sub`. type: allOf: - - $ref: '#/definitions/datastore.SourceType' + - $ref: '#/definitions/datastore.SourceType' description: Source Type. verifier: allOf: - - $ref: '#/definitions/models.VerifierConfig' + - $ref: '#/definitions/models.VerifierConfig' description: |- Verifiers are used to verify webhook events ingested in incoming webhooks projects. If set, type is required and match the verifier @@ -2065,21 +2048,21 @@ definitions: properties: alert_config: allOf: - - $ref: '#/definitions/models.AlertConfiguration' + - $ref: '#/definitions/models.AlertConfiguration' description: Alert configuration app_id: description: Deprecated but necessary for backward compatibility type: string delivery_mode: allOf: - - $ref: '#/definitions/datastore.DeliveryMode' + - $ref: '#/definitions/datastore.DeliveryMode' description: Delivery mode configuration endpoint_id: description: Destination endpoint ID type: string filter_config: allOf: - - $ref: '#/definitions/models.FilterConfiguration' + - $ref: '#/definitions/models.FilterConfiguration' description: Filter configuration function: description: |- @@ -2091,11 +2074,11 @@ definitions: type: string rate_limit_config: allOf: - - $ref: '#/definitions/models.RateLimitConfiguration' + - $ref: '#/definitions/models.RateLimitConfiguration' description: Rate limit configuration retry_config: allOf: - - $ref: '#/definitions/models.RetryConfiguration' + - $ref: '#/definitions/models.RetryConfiguration' description: Retry configuration source_id: description: Source Id @@ -2112,7 +2095,7 @@ definitions: type: $ref: '#/definitions/datastore.VerifierType' required: - - type + - type type: object util.ServerResponse: properties: @@ -2121,14 +2104,13 @@ definitions: status: type: boolean type: object -host: dashboard.getconvoy.io +host: us.getconvoy.cloud 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. + 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/ @@ -2139,1990 +2121,1986 @@ paths: /v1/projects/{projectID}/endpoints: get: consumes: - - application/json + - application/json description: This endpoint fetches an endpoints operationId: GetEndpoints parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - enum: - - next - - prev - in: query - name: direction - 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 - type: string - - description: The owner ID of the endpoint - example: 01H0JA5MEES38RRK3HTEJC647K - in: query - name: ownerId - type: string - - description: The number of items to return per page - example: 20 - in: query - name: perPage - type: integer - - description: A pagination cursor to fetch the previous page of a list - example: 01H0JATTVCXZK8FRDX1M1JN3QY - in: query - name: prev_page_cursor - type: string - - description: The name of the endpoint - example: endpoint-1 - in: query - name: q - type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - example: ASC | DESC - in: query - name: sort - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - enum: + - next + - prev + in: query + name: direction + 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 + type: string + - description: The owner ID of the endpoint + example: 01H0JA5MEES38RRK3HTEJC647K + in: query + name: ownerId + type: string + - description: The number of items to return per page + example: 20 + in: query + name: perPage + type: integer + - description: A pagination cursor to fetch the previous page of a list + example: 01H0JATTVCXZK8FRDX1M1JN3QY + in: query + name: prev_page_cursor + type: string + - description: The name of the endpoint + example: endpoint-1 + in: query + name: q + type: string + - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` + example: ASC | DESC + in: query + name: sort + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - allOf: - - $ref: '#/definitions/models.PagedResponse' - - properties: - content: - items: - $ref: '#/definitions/models.EndpointResponse' - type: array - type: object - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + allOf: + - $ref: '#/definitions/models.PagedResponse' + - properties: + content: + items: + $ref: '#/definitions/models.EndpointResponse' + type: array + type: object + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: List all endpoints tags: - - Endpoints + - Endpoints post: consumes: - - application/json + - application/json description: This endpoint creates an endpoint operationId: CreateEndpoint parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Endpoint Details - in: body - name: endpoint - required: true - schema: - $ref: '#/definitions/models.CreateEndpoint' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Endpoint Details + in: body + name: endpoint + required: true + schema: + $ref: '#/definitions/models.CreateEndpoint' produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EndpointResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EndpointResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Create an endpoint tags: - - Endpoints + - Endpoints /v1/projects/{projectID}/endpoints/{endpointID}: delete: consumes: - - application/json + - application/json description: This endpoint deletes an endpoint operationId: DeleteEndpoint parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Endpoint ID + in: path + name: endpointID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Delete endpoint tags: - - Endpoints + - Endpoints get: consumes: - - application/json + - application/json description: This endpoint fetches an endpoint operationId: GetEndpoint parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Endpoint ID + in: path + name: endpointID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EndpointResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EndpointResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Retrieve endpoint tags: - - Endpoints + - Endpoints put: consumes: - - application/json + - application/json description: This endpoint updates an endpoint operationId: UpdateEndpoint parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - type: string - - description: Endpoint Details - in: body - name: endpoint - required: true - schema: - $ref: '#/definitions/models.UpdateEndpoint' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Endpoint ID + in: path + name: endpointID + required: true + type: string + - description: Endpoint Details + in: body + name: endpoint + required: true + schema: + $ref: '#/definitions/models.UpdateEndpoint' produces: - - application/json + - application/json responses: "202": description: Accepted schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EndpointResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EndpointResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Update an endpoint tags: - - Endpoints + - Endpoints /v1/projects/{projectID}/endpoints/{endpointID}/activate: post: consumes: - - application/json + - application/json description: Activated an inactive endpoint operationId: ActivateEndpoint parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Endpoint ID + in: path + name: endpointID + required: true + type: string produces: - - application/json + - application/json responses: "202": description: Accepted schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EndpointResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EndpointResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Activate endpoint tags: - - Endpoints + - Endpoints /v1/projects/{projectID}/endpoints/{endpointID}/expire_secret: put: consumes: - - application/json + - application/json description: This endpoint expires and re-generates the endpoint secret. operationId: ExpireSecret parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - type: string - - description: Expire Secret Body Parameters - in: body - name: endpoint - required: true - schema: - $ref: '#/definitions/models.ExpireSecret' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Endpoint ID + in: path + name: endpointID + required: true + type: string + - description: Expire Secret Body Parameters + in: body + name: endpoint + required: true + schema: + $ref: '#/definitions/models.ExpireSecret' produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EndpointResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EndpointResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Roll endpoint secret tags: - - Endpoints + - Endpoints /v1/projects/{projectID}/endpoints/{endpointID}/pause: put: consumes: - - application/json + - application/json description: Toggles an endpoint's status between active and paused states operationId: PauseEndpoint parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Endpoint ID + in: path + name: endpointID + required: true + type: string produces: - - application/json + - application/json responses: "202": description: Accepted schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EndpointResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EndpointResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Pause endpoint tags: - - Endpoints + - Endpoints /v1/projects/{projectID}/endpoints/oauth2/test: post: consumes: - - application/json - description: This endpoint tests the OAuth2 connection by attempting to exchange - a token + - application/json + description: This endpoint tests the OAuth2 connection by attempting to exchange a token operationId: TestOAuth2Connection parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: OAuth2 Configuration - in: body - name: oauth2 - required: true - schema: - $ref: '#/definitions/models.TestOAuth2Request' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: OAuth2 Configuration + in: body + name: oauth2 + required: true + schema: + $ref: '#/definitions/models.TestOAuth2Request' produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.TestOAuth2Response' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.TestOAuth2Response' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Test OAuth2 connection tags: - - Endpoints + - Endpoints /v1/projects/{projectID}/event-types: get: consumes: - - application/json + - application/json description: This endpoint fetches the project's event types operationId: GetEventTypes parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - items: - $ref: '#/definitions/models.EventTypeResponse' - type: array - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + items: + $ref: '#/definitions/models.EventTypeResponse' + type: array + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Retrieves a project's event types tags: - - EventTypes + - EventTypes post: consumes: - - application/json + - application/json description: This endpoint creates an event type operationId: CreateEventType parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Event Type Details - in: body - name: eventType - required: true - schema: - $ref: '#/definitions/models.CreateEventType' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Event Type Details + in: body + name: eventType + required: true + schema: + $ref: '#/definitions/models.CreateEventType' produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EventTypeResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EventTypeResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Create an event type tags: - - EventTypes + - EventTypes /v1/projects/{projectID}/event-types/{eventTypeId}: put: consumes: - - application/json + - application/json description: This endpoint updates an event type operationId: UpdateEventType parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Event Type Details - in: body - name: eventType - required: true - schema: - $ref: '#/definitions/models.UpdateEventType' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Event Type Details + in: body + name: eventType + required: true + schema: + $ref: '#/definitions/models.UpdateEventType' produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EventTypeResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EventTypeResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Updates an event type tags: - - EventTypes + - EventTypes /v1/projects/{projectID}/event-types/{eventTypeId}/deprecate: post: consumes: - - application/json + - application/json description: This endpoint deprecates an event type operationId: DeprecateEventType parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Event Type ID - in: path - name: eventTypeId - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Event Type ID + in: path + name: eventTypeId + required: true + type: string produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EventTypeResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EventTypeResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Deprecates an event type tags: - - EventTypes + - EventTypes /v1/projects/{projectID}/event-types/import: post: consumes: - - application/json + - application/json description: This endpoint imports event types from an OpenAPI specification operationId: ImportOpenApiSpec parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: OpenAPI specification - in: body - name: spec - required: true - schema: - $ref: '#/definitions/models.ImportOpenAPISpec' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: OpenAPI specification + in: body + name: spec + required: true + schema: + $ref: '#/definitions/models.ImportOpenAPISpec' produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - items: - $ref: '#/definitions/models.EventTypeResponse' - type: array - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + items: + $ref: '#/definitions/models.EventTypeResponse' + type: array + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Import event types from OpenAPI spec tags: - - EventTypes + - EventTypes /v1/projects/{projectID}/eventdeliveries: get: consumes: - - application/json + - application/json description: This endpoint retrieves all event deliveries paginated. operationId: GetEventDeliveriesPaged parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - enum: - - next - - prev - in: query - name: direction - type: string - x-enum-varnames: - - Next - - Prev - - description: The end date - example: 2008-05-02T15:04:05 - in: query - name: endDate - type: string - - collectionFormat: csv - description: A list of endpoint IDs to filter by - in: query - items: + - description: Project ID + in: path + name: projectID + required: true type: string - name: endpointId - type: array - - description: Event ID to filter by - in: query - name: eventId - type: string - - description: EventType to filter by - in: query - name: event_type - type: string - - description: IdempotencyKey to filter by - in: query - name: idempotencyKey - type: string - - description: A pagination cursor to fetch the next page of a list - example: 01H0JA5MEES38RRK3HTEJC647K - in: query - name: next_page_cursor - type: string - - description: The number of items to return per page - example: 20 - in: query - name: perPage - type: integer - - description: A pagination cursor to fetch the previous page of a list - example: 01H0JATTVCXZK8FRDX1M1JN3QY - in: query - name: prev_page_cursor - type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - example: ASC | DESC - in: query - name: sort - type: string - - description: The start date - example: 2006-01-02T15:04:05 - in: query - name: startDate - type: string - - collectionFormat: csv - description: A list of event delivery statuses to filter by - in: query - items: + - enum: + - next + - prev + in: query + name: direction + type: string + x-enum-varnames: + - Next + - Prev + - description: The end date + example: 2008-05-02T15:04:05 + in: query + name: endDate + type: string + - collectionFormat: csv + description: A list of endpoint IDs to filter by + in: query + items: + type: string + name: endpointId + type: array + - description: Event ID to filter by + in: query + name: eventId + type: string + - description: EventType to filter by + in: query + name: event_type + type: string + - description: IdempotencyKey to filter by + in: query + name: idempotencyKey + type: string + - description: A pagination cursor to fetch the next page of a list + example: 01H0JA5MEES38RRK3HTEJC647K + in: query + name: next_page_cursor + type: string + - description: The number of items to return per page + example: 20 + in: query + name: perPage + type: integer + - description: A pagination cursor to fetch the previous page of a list + example: 01H0JATTVCXZK8FRDX1M1JN3QY + in: query + name: prev_page_cursor + type: string + - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` + example: ASC | DESC + in: query + name: sort + type: string + - description: The start date + example: 2006-01-02T15:04:05 + in: query + name: startDate + type: string + - collectionFormat: csv + description: A list of event delivery statuses to filter by + in: query + items: + type: string + name: status + type: array + - description: SubscriptionID to filter by + in: query + name: subscriptionId type: string - name: status - type: array - - description: SubscriptionID to filter by - in: query - name: subscriptionId - type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - allOf: - - $ref: '#/definitions/models.PagedResponse' - - properties: - content: - items: - $ref: '#/definitions/models.EventDeliveryResponse' - type: array - type: object - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + allOf: + - $ref: '#/definitions/models.PagedResponse' + - properties: + content: + items: + $ref: '#/definitions/models.EventDeliveryResponse' + type: array + type: object + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: List all event deliveries tags: - - Event Deliveries + - Event Deliveries /v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}: get: consumes: - - application/json + - application/json description: This endpoint fetches an event delivery. operationId: GetEventDelivery parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: event delivery id - in: path - name: eventDeliveryID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: event delivery id + in: path + name: eventDeliveryID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EventDeliveryResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EventDeliveryResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Retrieve an event delivery tags: - - Event Deliveries + - Event Deliveries /v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts: get: consumes: - - application/json + - application/json description: This endpoint fetches an app message's delivery attempts operationId: GetDeliveryAttempts parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: event delivery id - in: path - name: eventDeliveryID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: event delivery id + in: path + name: eventDeliveryID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - items: - $ref: '#/definitions/datastore.DeliveryAttempt' - type: array - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + items: + $ref: '#/definitions/datastore.DeliveryAttempt' + type: array + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: List delivery attempts tags: - - Delivery Attempts + - Delivery Attempts /v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts/{deliveryAttemptID}: get: consumes: - - application/json + - application/json description: This endpoint fetches an app event delivery attempt operationId: GetDeliveryAttempt parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: event delivery id - in: path - name: eventDeliveryID - required: true - type: string - - description: delivery attempt id - in: path - name: deliveryAttemptID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: event delivery id + in: path + name: eventDeliveryID + required: true + type: string + - description: delivery attempt id + in: path + name: deliveryAttemptID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/datastore.DeliveryAttempt' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/datastore.DeliveryAttempt' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Retrieve a delivery attempt tags: - - Delivery Attempts + - Delivery Attempts /v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/resend: put: consumes: - - application/json + - application/json description: This endpoint retries an event delivery. operationId: ResendEventDelivery parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: event delivery id - in: path - name: eventDeliveryID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: event delivery id + in: path + name: eventDeliveryID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EventDeliveryResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EventDeliveryResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Retry event delivery tags: - - Event Deliveries + - Event Deliveries /v1/projects/{projectID}/eventdeliveries/batchretry: post: consumes: - - application/json + - application/json description: This endpoint batch retries multiple event deliveries at once. operationId: BatchRetryEventDelivery parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - enum: - - next - - prev - in: query - name: direction - type: string - x-enum-varnames: - - Next - - Prev - - description: The end date - example: 2008-05-02T15:04:05 - in: query - name: endDate - type: string - - collectionFormat: csv - description: A list of endpoint IDs to filter by - in: query - items: + - description: Project ID + in: path + name: projectID + required: true type: string - name: endpointId - type: array - - description: Event ID to filter by - in: query - name: eventId - type: string - - description: EventType to filter by - in: query - name: event_type - type: string - - description: IdempotencyKey to filter by - in: query - name: idempotencyKey - type: string - - description: A pagination cursor to fetch the next page of a list - example: 01H0JA5MEES38RRK3HTEJC647K - in: query - name: next_page_cursor - type: string - - description: The number of items to return per page - example: 20 - in: query - name: perPage - type: integer - - description: A pagination cursor to fetch the previous page of a list - example: 01H0JATTVCXZK8FRDX1M1JN3QY - in: query - name: prev_page_cursor - type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - example: ASC | DESC - in: query - name: sort - type: string - - description: The start date - example: 2006-01-02T15:04:05 - in: query - name: startDate - type: string - - collectionFormat: csv - description: A list of event delivery statuses to filter by - in: query - items: + - enum: + - next + - prev + in: query + name: direction + type: string + x-enum-varnames: + - Next + - Prev + - description: The end date + example: 2008-05-02T15:04:05 + in: query + name: endDate + type: string + - collectionFormat: csv + description: A list of endpoint IDs to filter by + in: query + items: + type: string + name: endpointId + type: array + - description: Event ID to filter by + in: query + name: eventId + type: string + - description: EventType to filter by + in: query + name: event_type + type: string + - description: IdempotencyKey to filter by + in: query + name: idempotencyKey + type: string + - description: A pagination cursor to fetch the next page of a list + example: 01H0JA5MEES38RRK3HTEJC647K + in: query + name: next_page_cursor + type: string + - description: The number of items to return per page + example: 20 + in: query + name: perPage + type: integer + - description: A pagination cursor to fetch the previous page of a list + example: 01H0JATTVCXZK8FRDX1M1JN3QY + in: query + name: prev_page_cursor + type: string + - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` + example: ASC | DESC + in: query + name: sort + type: string + - description: The start date + example: 2006-01-02T15:04:05 + in: query + name: startDate + type: string + - collectionFormat: csv + description: A list of event delivery statuses to filter by + in: query + items: + type: string + name: status + type: array + - description: SubscriptionID to filter by + in: query + name: subscriptionId type: string - name: status - type: array - - description: SubscriptionID to filter by - in: query - name: subscriptionId - type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Batch retry event delivery tags: - - Event Deliveries + - Event Deliveries /v1/projects/{projectID}/eventdeliveries/forceresend: post: consumes: - - application/json + - application/json description: This endpoint enables you retry a previously successful event delivery operationId: ForceResendEventDeliveries parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: event delivery ids - in: body - name: deliveryIds - required: true - schema: - $ref: '#/definitions/models.IDs' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: event delivery ids + in: body + name: deliveryIds + required: true + schema: + $ref: '#/definitions/models.IDs' produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Force retry event delivery tags: - - Event Deliveries + - Event Deliveries /v1/projects/{projectID}/events: get: consumes: - - application/json + - application/json description: This endpoint fetches app events with pagination operationId: GetEventsPaged parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - enum: - - next - - prev - in: query - name: direction - type: string - x-enum-varnames: - - Next - - Prev - - description: The end date - example: 2008-05-02T15:04:05 - in: query - name: endDate - type: string - - collectionFormat: csv - description: A list of endpoint ids to filter by - in: query - items: + - description: Project ID + in: path + name: projectID + required: true type: string - name: endpointId - type: array - - description: IdempotencyKey to filter by - in: query - name: idempotencyKey - type: string - - description: A pagination cursor to fetch the next page of a list - example: 01H0JA5MEES38RRK3HTEJC647K - in: query - name: next_page_cursor - type: string - - description: The number of items to return per page - example: 20 - in: query - name: perPage - type: integer - - description: A pagination cursor to fetch the previous page of a list - example: 01H0JATTVCXZK8FRDX1M1JN3QY - in: query - name: prev_page_cursor - type: string - - description: Any arbitrary value to filter the events payload - in: query - name: query - type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - example: ASC | DESC - in: query - name: sort - type: string - - collectionFormat: csv - description: A list of Source IDs to filter the events by. - in: query - items: + - enum: + - next + - prev + in: query + name: direction + type: string + x-enum-varnames: + - Next + - Prev + - description: The end date + example: 2008-05-02T15:04:05 + in: query + name: endDate + type: string + - collectionFormat: csv + description: A list of endpoint ids to filter by + in: query + items: + type: string + name: endpointId + type: array + - description: IdempotencyKey to filter by + in: query + name: idempotencyKey + type: string + - description: A pagination cursor to fetch the next page of a list + example: 01H0JA5MEES38RRK3HTEJC647K + in: query + name: next_page_cursor + type: string + - description: The number of items to return per page + example: 20 + in: query + name: perPage + type: integer + - description: A pagination cursor to fetch the previous page of a list + example: 01H0JATTVCXZK8FRDX1M1JN3QY + in: query + name: prev_page_cursor + type: string + - description: Any arbitrary value to filter the events payload + in: query + name: query + type: string + - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` + example: ASC | DESC + in: query + name: sort + type: string + - collectionFormat: csv + description: A list of Source IDs to filter the events by. + in: query + items: + type: string + name: sourceId + type: array + - description: The start date + example: 2006-01-02T15:04:05 + in: query + name: startDate type: string - name: sourceId - type: array - - description: The start date - example: 2006-01-02T15:04:05 - in: query - name: startDate - type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - allOf: - - $ref: '#/definitions/models.PagedResponse' - - properties: - content: - items: - $ref: '#/definitions/models.EventResponse' - type: array - type: object - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + allOf: + - $ref: '#/definitions/models.PagedResponse' + - properties: + content: + items: + $ref: '#/definitions/models.EventResponse' + type: array + type: object + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: List all events tags: - - Events + - Events post: consumes: - - application/json + - application/json description: This endpoint creates an endpoint event operationId: CreateEndpointEvent parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Event Details - in: body - name: event - required: true - schema: - $ref: '#/definitions/models.CreateEvent' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Event Details + in: body + name: event + required: true + schema: + $ref: '#/definitions/models.CreateEvent' produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Create an event tags: - - Events + - Events /v1/projects/{projectID}/events/{eventID}: get: consumes: - - application/json + - application/json description: This endpoint retrieves an event operationId: GetEndpointEvent parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: event id - in: path - name: eventID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: event id + in: path + name: eventID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EventResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EventResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Retrieve an event tags: - - Events + - Events /v1/projects/{projectID}/events/{eventID}/replay: put: consumes: - - application/json + - application/json description: This endpoint replays an event afresh assuming it is a new event. operationId: ReplayEndpointEvent parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: event id - in: path - name: eventID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: event id + in: path + name: eventID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EventResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EventResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Replay event tags: - - Events + - Events /v1/projects/{projectID}/events/batchreplay: post: consumes: - - application/json + - application/json description: This endpoint replays multiple events at once. operationId: BatchReplayEvents parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - enum: - - next - - prev - in: query - name: direction - type: string - x-enum-varnames: - - Next - - Prev - - description: The end date - example: 2008-05-02T15:04:05 - in: query - name: endDate - type: string - - collectionFormat: csv - description: A list of endpoint ids to filter by - in: query - items: + - description: Project ID + in: path + name: projectID + required: true type: string - name: endpointId - type: array - - description: IdempotencyKey to filter by - in: query - name: idempotencyKey - type: string - - description: A pagination cursor to fetch the next page of a list - example: 01H0JA5MEES38RRK3HTEJC647K - in: query - name: next_page_cursor - type: string - - description: The number of items to return per page - example: 20 - in: query - name: perPage - type: integer - - description: A pagination cursor to fetch the previous page of a list - example: 01H0JATTVCXZK8FRDX1M1JN3QY - in: query - name: prev_page_cursor - type: string - - description: Any arbitrary value to filter the events payload - in: query - name: query - type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - example: ASC | DESC - in: query - name: sort - type: string - - collectionFormat: csv - description: A list of Source IDs to filter the events by. - in: query - items: + - enum: + - next + - prev + in: query + name: direction + type: string + x-enum-varnames: + - Next + - Prev + - description: The end date + example: 2008-05-02T15:04:05 + in: query + name: endDate + type: string + - collectionFormat: csv + description: A list of endpoint ids to filter by + in: query + items: + type: string + name: endpointId + type: array + - description: IdempotencyKey to filter by + in: query + name: idempotencyKey + type: string + - description: A pagination cursor to fetch the next page of a list + example: 01H0JA5MEES38RRK3HTEJC647K + in: query + name: next_page_cursor + type: string + - description: The number of items to return per page + example: 20 + in: query + name: perPage + type: integer + - description: A pagination cursor to fetch the previous page of a list + example: 01H0JATTVCXZK8FRDX1M1JN3QY + in: query + name: prev_page_cursor + type: string + - description: Any arbitrary value to filter the events payload + in: query + name: query + type: string + - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` + example: ASC | DESC + in: query + name: sort + type: string + - collectionFormat: csv + description: A list of Source IDs to filter the events by. + in: query + items: + type: string + name: sourceId + type: array + - description: The start date + example: 2006-01-02T15:04:05 + in: query + name: startDate type: string - name: sourceId - type: array - - description: The start date - example: 2006-01-02T15:04:05 - in: query - name: startDate - type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - type: string - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + type: string + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Batch replay events tags: - - Events + - Events /v1/projects/{projectID}/events/broadcast: post: consumes: - - application/json - description: This endpoint creates a event that is broadcast to every endpoint - whose subscription matches the given event type. + - application/json + description: This endpoint creates a event that is broadcast to every endpoint whose subscription matches the given event type. operationId: CreateBroadcastEvent parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Broadcast Event Details - in: body - name: event - required: true - schema: - $ref: '#/definitions/models.BroadcastEvent' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Broadcast Event Details + in: body + name: event + required: true + schema: + $ref: '#/definitions/models.BroadcastEvent' produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.EventResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.EventResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Create a broadcast event tags: - - Events + - Events /v1/projects/{projectID}/events/dynamic: post: consumes: - - application/json - 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 + - application/json + 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 parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Event Details - in: body - name: event - required: true - schema: - $ref: '#/definitions/models.DynamicEvent' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Event Details + in: body + name: event + required: true + schema: + $ref: '#/definitions/models.DynamicEvent' produces: - - application/json + - application/json responses: "201": description: Created @@ -4132,2248 +4110,2244 @@ paths: description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Dynamic Events tags: - - Events + - Events /v1/projects/{projectID}/events/fanout: post: consumes: - - application/json - description: This endpoint uses the owner_id to fan out an event to multiple - endpoints. + - application/json + description: This endpoint uses the owner_id to fan out an event to multiple endpoints. operationId: CreateEndpointFanoutEvent parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Event Details - in: body - name: event - required: true - schema: - $ref: '#/definitions/models.FanoutEvent' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Event Details + in: body + name: event + required: true + schema: + $ref: '#/definitions/models.FanoutEvent' produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Fan out an event tags: - - Events + - Events /v1/projects/{projectID}/meta-events: get: consumes: - - application/json + - application/json description: This endpoint fetches meta events with pagination operationId: GetMetaEventsPaged parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - enum: - - next - - prev - in: query - name: direction - type: string - x-enum-varnames: - - Next - - Prev - - description: The end date - example: 2008-05-02T15:04:05 - in: query - name: endDate - type: string - - description: A pagination cursor to fetch the next page of a list - example: 01H0JA5MEES38RRK3HTEJC647K - in: query - name: next_page_cursor - type: string - - description: The number of items to return per page - example: 20 - in: query - name: perPage - type: integer - - description: A pagination cursor to fetch the previous page of a list - example: 01H0JATTVCXZK8FRDX1M1JN3QY - in: query - name: prev_page_cursor - type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - example: ASC | DESC - in: query - name: sort - type: string - - description: The start date - example: 2006-01-02T15:04:05 - in: query - name: startDate - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - enum: + - next + - prev + in: query + name: direction + type: string + x-enum-varnames: + - Next + - Prev + - description: The end date + example: 2008-05-02T15:04:05 + in: query + name: endDate + type: string + - description: A pagination cursor to fetch the next page of a list + example: 01H0JA5MEES38RRK3HTEJC647K + in: query + name: next_page_cursor + type: string + - description: The number of items to return per page + example: 20 + in: query + name: perPage + type: integer + - description: A pagination cursor to fetch the previous page of a list + example: 01H0JATTVCXZK8FRDX1M1JN3QY + in: query + name: prev_page_cursor + type: string + - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` + example: ASC | DESC + in: query + name: sort + type: string + - description: The start date + example: 2006-01-02T15:04:05 + in: query + name: startDate + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - allOf: - - $ref: '#/definitions/models.PagedResponse' - - properties: - content: - items: - $ref: '#/definitions/models.MetaEventResponse' - type: array - type: object - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + allOf: + - $ref: '#/definitions/models.PagedResponse' + - properties: + content: + items: + $ref: '#/definitions/models.MetaEventResponse' + type: array + type: object + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: List all meta events tags: - - Meta Events + - Meta Events /v1/projects/{projectID}/meta-events/{metaEventID}: get: consumes: - - application/json + - application/json description: This endpoint retrieves a meta event operationId: GetMetaEvent parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: meta event id - in: path - name: metaEventID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: meta event id + in: path + name: metaEventID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.MetaEventResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.MetaEventResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Retrieve a meta event tags: - - Meta Events + - Meta Events /v1/projects/{projectID}/meta-events/{metaEventID}/resend: put: consumes: - - application/json + - application/json description: This endpoint retries a meta event operationId: ResendMetaEvent parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: meta event id - in: path - name: metaEventID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: meta event id + in: path + name: metaEventID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.MetaEventResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.MetaEventResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Retry meta event tags: - - Meta Events + - Meta Events /v1/projects/{projectID}/onboard: post: consumes: - - application/json - - multipart/form-data - description: This endpoint accepts a CSV file or JSON body to bulk-create endpoints - with subscriptions + - application/json + - multipart/form-data + description: This endpoint accepts a CSV file or JSON body to bulk-create endpoints with subscriptions operationId: BulkOnboard parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Validate without creating - in: query - name: dry_run - type: boolean - - description: Onboard Details (JSON) - in: body - name: onboard - schema: - $ref: '#/definitions/models.BulkOnboardRequest' - - description: CSV file upload - in: formData - name: file - type: file + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Validate without creating + in: query + name: dry_run + type: boolean + - description: Onboard Details (JSON) + in: body + name: onboard + schema: + $ref: '#/definitions/models.BulkOnboardRequest' + - description: CSV file upload + in: formData + name: file + type: file produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.BulkOnboardDryRunResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.BulkOnboardDryRunResponse' + type: object "202": description: Accepted schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.BulkOnboardAcceptedResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.BulkOnboardAcceptedResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Bulk onboard endpoints with subscriptions tags: - - Onboard + - Onboard /v1/projects/{projectID}/portal-links: get: consumes: - - application/json + - application/json description: This endpoint fetches multiple portal links operationId: LoadPortalLinksPaged parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - enum: - - next - - prev - in: query - name: direction - 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 - type: string - - description: The owner ID of the endpoint - example: 01H0JA5MEES38RRK3HTEJC647K - in: query - name: ownerId - type: string - - description: The number of items to return per page - example: 20 - in: query - name: perPage - type: integer - - description: A pagination cursor to fetch the previous page of a list - example: 01H0JATTVCXZK8FRDX1M1JN3QY - in: query - name: prev_page_cursor - type: string - - description: The name of the endpoint - example: endpoint-1 - in: query - name: q - type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - example: ASC | DESC - in: query - name: sort - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - enum: + - next + - prev + in: query + name: direction + 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 + type: string + - description: The owner ID of the endpoint + example: 01H0JA5MEES38RRK3HTEJC647K + in: query + name: ownerId + type: string + - description: The number of items to return per page + example: 20 + in: query + name: perPage + type: integer + - description: A pagination cursor to fetch the previous page of a list + example: 01H0JATTVCXZK8FRDX1M1JN3QY + in: query + name: prev_page_cursor + type: string + - description: The name of the endpoint + example: endpoint-1 + in: query + name: q + type: string + - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` + example: ASC | DESC + in: query + name: sort + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - allOf: - - $ref: '#/definitions/models.PagedResponse' - - properties: - content: - items: - $ref: '#/definitions/datastore.PortalLinkResponse' - type: array - type: object - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + allOf: + - $ref: '#/definitions/models.PagedResponse' + - properties: + content: + items: + $ref: '#/definitions/datastore.PortalLinkResponse' + type: array + type: object + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: List all portal links tags: - - Portal Links + - Portal Links post: consumes: - - application/json + - application/json description: This endpoint creates a portal link operationId: CreatePortalLink parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Portal Link Details - in: body - name: portallink - required: true - schema: - $ref: '#/definitions/datastore.CreatePortalLinkRequest' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Portal Link Details + in: body + name: portallink + required: true + schema: + $ref: '#/definitions/datastore.CreatePortalLinkRequest' produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/datastore.PortalLinkResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/datastore.PortalLinkResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Create a portal link tags: - - Portal Links + - Portal Links /v1/projects/{projectID}/portal-links/{portalLinkID}: get: consumes: - - application/json + - application/json description: This endpoint retrieves a portal link by its id. operationId: GetPortalLink parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: portal link id - in: path - name: portalLinkID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: portal link id + in: path + name: portalLinkID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/datastore.PortalLinkResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/datastore.PortalLinkResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Retrieve a portal link tags: - - Portal Links + - Portal Links put: consumes: - - application/json + - application/json description: This endpoint updates a portal link operationId: UpdatePortalLink parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: portal link id - in: path - name: portalLinkID - required: true - type: string - - description: Portal Link Details - in: body - name: portallink - required: true - schema: - $ref: '#/definitions/datastore.UpdatePortalLinkRequest' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: portal link id + in: path + name: portalLinkID + required: true + type: string + - description: Portal Link Details + in: body + name: portallink + required: true + schema: + $ref: '#/definitions/datastore.UpdatePortalLinkRequest' produces: - - application/json + - application/json responses: "202": description: Accepted schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/datastore.PortalLinkResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/datastore.PortalLinkResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Update a portal link tags: - - Portal Links + - Portal Links /v1/projects/{projectID}/portal-links/{portalLinkID}/refresh_token: get: consumes: - - application/json + - application/json description: This endpoint retrieves a portal link auth token operationId: RefreshPortalLinkAuthToken parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: portal link id - in: path - name: portalLinkID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: portal link id + in: path + name: portalLinkID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - type: string - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + type: string + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Get a portal link auth token tags: - - Portal Links + - Portal Links /v1/projects/{projectID}/portal-links/{portalLinkID}/revoke: put: consumes: - - application/json + - application/json description: This endpoint revokes a portal link operationId: RevokePortalLink parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: portal link id - in: path - name: portalLinkID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: portal link id + in: path + name: portalLinkID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Revoke a portal link tags: - - Portal Links + - Portal Links /v1/projects/{projectID}/sources: get: consumes: - - application/json + - application/json description: This endpoint fetches multiple sources operationId: LoadSourcesPaged parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - enum: - - next - - prev - in: query - name: direction - 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 - type: string - - description: The number of items to return per page - example: 20 - in: query - name: perPage - type: integer - - description: A pagination cursor to fetch the previous page of a list - example: 01H0JATTVCXZK8FRDX1M1JN3QY - in: query - name: prev_page_cursor - type: string - - description: The custom source provider e.g. twitter, shopify - example: twitter - in: query - name: provider - type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - example: ASC | DESC - in: query - name: sort - type: string - - description: The source type e.g. http, pub_sub - example: http - in: query - name: type - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - enum: + - next + - prev + in: query + name: direction + 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 + type: string + - description: The number of items to return per page + example: 20 + in: query + name: perPage + type: integer + - description: A pagination cursor to fetch the previous page of a list + example: 01H0JATTVCXZK8FRDX1M1JN3QY + in: query + name: prev_page_cursor + type: string + - description: The custom source provider e.g. twitter, shopify + example: twitter + in: query + name: provider + type: string + - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` + example: ASC | DESC + in: query + name: sort + type: string + - description: The source type e.g. http, pub_sub + example: http + in: query + name: type + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - allOf: - - $ref: '#/definitions/models.PagedResponse' - - properties: - content: - items: - $ref: '#/definitions/models.SourceResponse' - type: array - type: object - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + allOf: + - $ref: '#/definitions/models.PagedResponse' + - properties: + content: + items: + $ref: '#/definitions/models.SourceResponse' + type: array + type: object + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: List all sources tags: - - Sources + - Sources post: consumes: - - application/json + - application/json description: This endpoint creates a source operationId: CreateSource parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Source Details - in: body - name: source - required: true - schema: - $ref: '#/definitions/models.CreateSource' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Source Details + in: body + name: source + required: true + schema: + $ref: '#/definitions/models.CreateSource' produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.SourceResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.SourceResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Create a source tags: - - Sources + - Sources /v1/projects/{projectID}/sources/{sourceID}: delete: consumes: - - application/json + - application/json description: This endpoint deletes a source operationId: DeleteSource parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: source id - in: path - name: sourceID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: source id + in: path + name: sourceID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Delete a source tags: - - Sources + - Sources get: consumes: - - application/json + - application/json description: This endpoint retrieves a source by its id operationId: GetSource parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Source ID - in: path - name: sourceID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Source ID + in: path + name: sourceID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.SourceResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.SourceResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Retrieve a source tags: - - Sources + - Sources put: consumes: - - application/json + - application/json description: This endpoint updates a source operationId: UpdateSource parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: source id - in: path - name: sourceID - required: true - type: string - - description: Source Details - in: body - name: source - required: true - schema: - $ref: '#/definitions/models.UpdateSource' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: source id + in: path + name: sourceID + required: true + type: string + - description: Source Details + in: body + name: source + required: true + schema: + $ref: '#/definitions/models.UpdateSource' produces: - - application/json + - application/json responses: "202": description: Accepted schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.SourceResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.SourceResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Update a source tags: - - Sources + - Sources /v1/projects/{projectID}/sources/test_function: post: consumes: - - application/json - description: This endpoint validates that a filter will match a certain payload - structure. + - application/json + description: This endpoint validates that a filter will match a certain payload structure. parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Function Details - in: body - name: filter - required: true - schema: - $ref: '#/definitions/models.FunctionRequest' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Function Details + in: body + name: filter + required: true + schema: + $ref: '#/definitions/models.FunctionRequest' produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.FunctionResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.FunctionResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Validate source function tags: - - Subscriptions + - Subscriptions /v1/projects/{projectID}/subscriptions: get: consumes: - - application/json + - application/json description: This endpoint fetches all the subscriptions operationId: GetSubscriptions parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - enum: - - next - - prev - in: query - name: direction - type: string - x-enum-varnames: - - Next - - Prev - - collectionFormat: csv - description: A list of endpointIDs to filter by - in: query - items: + - description: Project ID + in: path + name: projectID + required: true + type: string + - enum: + - next + - prev + in: query + name: direction + type: string + x-enum-varnames: + - Next + - Prev + - collectionFormat: csv + description: A list of endpointIDs to filter by + in: query + items: + type: string + name: endpointId + type: array + - description: Subscription name to filter by + in: query + name: name + type: string + - description: A pagination cursor to fetch the next page of a list + example: 01H0JA5MEES38RRK3HTEJC647K + in: query + name: next_page_cursor + type: string + - description: The number of items to return per page + example: 20 + in: query + name: perPage + type: integer + - description: A pagination cursor to fetch the previous page of a list + example: 01H0JATTVCXZK8FRDX1M1JN3QY + in: query + name: prev_page_cursor + type: string + - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` + example: ASC | DESC + in: query + name: sort type: string - name: endpointId - type: array - - description: Subscription name to filter by - in: query - name: name - type: string - - description: A pagination cursor to fetch the next page of a list - example: 01H0JA5MEES38RRK3HTEJC647K - in: query - name: next_page_cursor - type: string - - description: The number of items to return per page - example: 20 - in: query - name: perPage - type: integer - - description: A pagination cursor to fetch the previous page of a list - example: 01H0JATTVCXZK8FRDX1M1JN3QY - in: query - name: prev_page_cursor - type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - example: ASC | DESC - in: query - name: sort - type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - allOf: - - $ref: '#/definitions/models.PagedResponse' - - properties: - content: - items: - $ref: '#/definitions/models.SubscriptionResponse' - type: array - type: object - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + allOf: + - $ref: '#/definitions/models.PagedResponse' + - properties: + content: + items: + $ref: '#/definitions/models.SubscriptionResponse' + type: array + type: object + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: List all subscriptions tags: - - Subscriptions + - Subscriptions post: consumes: - - application/json + - application/json description: This endpoint creates a subscriptions operationId: CreateSubscription parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Subscription details - in: body - name: subscription - required: true - schema: - $ref: '#/definitions/models.CreateSubscription' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Subscription details + in: body + name: subscription + required: true + schema: + $ref: '#/definitions/models.CreateSubscription' produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.SubscriptionResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.SubscriptionResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Create a subscription tags: - - Subscriptions + - Subscriptions /v1/projects/{projectID}/subscriptions/{subscriptionID}: delete: consumes: - - application/json + - application/json description: This endpoint deletes a subscription operationId: DeleteSubscription parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: subscription id - in: path - name: subscriptionID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: subscription id + in: path + name: subscriptionID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Delete subscription tags: - - Subscriptions + - Subscriptions get: consumes: - - application/json + - application/json description: This endpoint retrieves a single subscription operationId: GetSubscription parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: subscription id - in: path - name: subscriptionID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: subscription id + in: path + name: subscriptionID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.SubscriptionResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.SubscriptionResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Retrieve a subscription tags: - - Subscriptions + - Subscriptions put: consumes: - - application/json + - application/json description: This endpoint updates a subscription operationId: UpdateSubscription parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: subscription id - in: path - name: subscriptionID - required: true - type: string - - description: Subscription Details - in: body - name: subscription - required: true - schema: - $ref: '#/definitions/models.UpdateSubscription' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: subscription id + in: path + name: subscriptionID + required: true + type: string + - description: Subscription Details + in: body + name: subscription + required: true + schema: + $ref: '#/definitions/models.UpdateSubscription' produces: - - application/json + - application/json responses: "202": description: Accepted schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.SubscriptionResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.SubscriptionResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Update a subscription tags: - - Subscriptions + - Subscriptions /v1/projects/{projectID}/subscriptions/{subscriptionID}/filters: get: consumes: - - application/json + - application/json description: This endpoint fetches all filters for a subscription operationId: GetFilters parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Subscription ID + in: path + name: subscriptionID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - items: - $ref: '#/definitions/models.FilterResponse' - type: array - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + items: + $ref: '#/definitions/models.FilterResponse' + type: array + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: List all filters tags: - - Filters + - Filters post: consumes: - - application/json + - application/json description: This endpoint creates a new filter for a subscription operationId: CreateFilter parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - type: string - - description: Filter to create - in: body - name: filter - required: true - schema: - $ref: '#/definitions/models.CreateFilterRequest' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Subscription ID + in: path + name: subscriptionID + required: true + type: string + - description: Filter to create + in: body + name: filter + required: true + schema: + $ref: '#/definitions/models.CreateFilterRequest' produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.FilterResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.FilterResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Create a new filter tags: - - Filters + - Filters /v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/{filterID}: delete: consumes: - - application/json + - application/json description: This endpoint deletes a filter operationId: DeleteFilter parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - type: string - - description: Filter ID - in: path - name: filterID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Subscription ID + in: path + name: subscriptionID + required: true + type: string + - description: Filter ID + in: path + name: filterID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Delete a filter tags: - - Filters + - Filters get: consumes: - - application/json + - application/json description: This endpoint retrieves a single filter operationId: GetFilter parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - type: string - - description: Filter ID - in: path - name: filterID - required: true - type: string + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Subscription ID + in: path + name: subscriptionID + required: true + type: string + - description: Filter ID + in: path + name: filterID + required: true + type: string produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.FilterResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.FilterResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Get a filter tags: - - Filters + - Filters put: consumes: - - application/json + - application/json description: This endpoint updates an existing filter operationId: UpdateFilter parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - type: string - - description: Filter ID - in: path - name: filterID - required: true - type: string - - description: Updated filter - in: body - name: filter - required: true - schema: - $ref: '#/definitions/models.UpdateFilterRequest' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Subscription ID + in: path + name: subscriptionID + required: true + type: string + - description: Filter ID + in: path + name: filterID + required: true + type: string + - description: Updated filter + in: body + name: filter + required: true + schema: + $ref: '#/definitions/models.UpdateFilterRequest' produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.FilterResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.FilterResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Update a filter tags: - - Filters + - Filters /v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk: post: consumes: - - application/json + - application/json description: This endpoint creates multiple filters for a subscription operationId: BulkCreateFilters parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - type: string - - description: Filters to create - in: body - name: filters - required: true - schema: - items: - $ref: '#/definitions/models.CreateFilterRequest' - type: array + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Subscription ID + in: path + name: subscriptionID + required: true + type: string + - description: Filters to create + in: body + name: filters + required: true + schema: + items: + $ref: '#/definitions/models.CreateFilterRequest' + type: array produces: - - application/json + - application/json responses: "201": description: Created schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - items: - $ref: '#/definitions/models.FilterResponse' - type: array - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + items: + $ref: '#/definitions/models.FilterResponse' + type: array + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Create multiple subscription filters tags: - - Filters + - Filters /v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk_update: put: consumes: - - application/json + - application/json description: This endpoint updates multiple filters for a subscription operationId: BulkUpdateFilters parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - type: string - - description: Filters to update - in: body - name: filters - required: true - schema: - items: - $ref: '#/definitions/models.BulkUpdateFilterRequest' - type: array + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Subscription ID + in: path + name: subscriptionID + required: true + type: string + - description: Filters to update + in: body + name: filters + required: true + schema: + items: + $ref: '#/definitions/models.BulkUpdateFilterRequest' + type: array produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - items: - $ref: '#/definitions/models.FilterResponse' - type: array - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + items: + $ref: '#/definitions/models.FilterResponse' + type: array + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Update multiple subscription filters tags: - - Filters + - Filters /v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/test/{eventType}: post: consumes: - - application/json + - application/json description: This endpoint tests a filter against a payload operationId: TestFilter parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - type: string - - description: Event Type - in: path - name: eventType - required: true - type: string - - description: Payload to test - in: body - name: payload - required: true - schema: - $ref: '#/definitions/models.TestFilterRequest' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Subscription ID + in: path + name: subscriptionID + required: true + type: string + - description: Event Type + in: path + name: eventType + required: true + type: string + - description: Payload to test + in: body + name: payload + required: true + schema: + $ref: '#/definitions/models.TestFilterRequest' produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.TestFilterResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.TestFilterResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Test a filter tags: - - Filters + - Filters /v1/projects/{projectID}/subscriptions/test_filter: post: consumes: - - application/json - description: This endpoint validates that a filter will match a certain payload - structure. + - application/json + description: This endpoint validates that a filter will match a certain payload structure. operationId: TestSubscriptionFilter parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Filter Details - in: body - name: filter - required: true - schema: - $ref: '#/definitions/models.TestFilter' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Filter Details + in: body + name: filter + required: true + schema: + $ref: '#/definitions/models.TestFilter' produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - type: boolean - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + type: boolean + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Validate subscription filter tags: - - Subscriptions + - Subscriptions /v1/projects/{projectID}/subscriptions/test_function: post: consumes: - - application/json + - application/json description: This endpoint test runs a transform function against a payload. operationId: TestSubscriptionFunction parameters: - - description: Project ID - in: path - name: projectID - required: true - type: string - - description: Function Details - in: body - name: filter - required: true - schema: - $ref: '#/definitions/models.FunctionRequest' + - description: Project ID + in: path + name: projectID + required: true + type: string + - description: Function Details + in: body + name: filter + required: true + schema: + $ref: '#/definitions/models.FunctionRequest' produces: - - application/json + - application/json responses: "200": description: OK schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/models.FunctionResponse' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/models.FunctionResponse' + type: object "400": description: Bad Request schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "401": description: Unauthorized schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object "404": description: Not Found schema: allOf: - - $ref: '#/definitions/util.ServerResponse' - - properties: - data: - $ref: '#/definitions/handlers.Stub' - type: object + - $ref: '#/definitions/util.ServerResponse' + - properties: + data: + $ref: '#/definitions/handlers.Stub' + type: object security: - - ApiKeyAuth: [] + - ApiKeyAuth: [] summary: Test a subscription function tags: - - Subscriptions + - Subscriptions schemes: -- https + - https securityDefinitions: ApiKeyAuth: in: header @@ -6381,23 +6355,29 @@ securityDefinitions: type: apiKey swagger: "2.0" tags: -- description: Organisation related APIs - name: Organisations -- 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: Project related APIs - name: Projects -- description: Portal Links related APIs - name: Portal Links -- description: Meta Events related APIs - name: Meta Events + - 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 +produces: + - application/json +consumes: + - application/json diff --git a/docs/v3/openapi3.json b/docs/v3/openapi3.json index e9768ba4d1..f782bc4af9 100644 --- a/docs/v3/openapi3.json +++ b/docs/v3/openapi3.json @@ -1,11281 +1,11665 @@ { - "components": { - "schemas": { - "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": { - "auth": { - "$ref": "#/components/schemas/datastore.AmqpCredentials" - }, - "bindedExchange": { - "type": "string" - }, - "deadLetterExchange": { - "type": "string" - }, - "host": { - "type": "string" - }, - "port": { - "type": "string" - }, - "queue": { - "type": "string" - }, - "routingKey": { - "type": "string" - }, - "schema": { - "type": "string" - }, - "vhost": { - "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.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": { - "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" - }, - "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" - }, - "datastore.Device": { - "properties": { - "created_at": { - "type": "string" - }, - "deleted_at": { - "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" - }, - "datastore.EncodingType": { - "enum": [ - "base64", - "hex" - ], - "type": "string" - }, - "datastore.Endpoint": { - "properties": { - "advanced_signatures": { - "type": "boolean" - }, - "authentication": { - "$ref": "#/components/schemas/datastore.EndpointAuthentication" - }, - "content_type": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "description": { - "type": "string" - }, - "events": { - "type": "integer" - }, - "failure_rate": { - "type": "number" - }, - "http_timeout": { - "type": "integer" - }, - "mtls_client_cert": { - "allOf": [ - { - "$ref": "#/components/schemas/datastore.MtlsClientCert" - } - ], - "description": "mTLS client certificate configuration" - }, - "name": { - "type": "string" - }, - "owner_id": { - "type": "string" - }, - "project_id": { - "type": "string" - }, - "rate_limit": { - "type": "integer" - }, - "rate_limit_duration": { - "type": "integer" - }, - "secrets": { - "items": { - "$ref": "#/components/schemas/datastore.Secret" - }, - "type": "array" - }, - "slack_webhook_url": { - "type": "string" - }, - "status": { - "$ref": "#/components/schemas/datastore.EndpointStatus" - }, - "support_email": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "datastore.EndpointAuthentication": { - "properties": { - "api_key": { - "$ref": "#/components/schemas/datastore.ApiKey" - }, - "basic_auth": { - "$ref": "#/components/schemas/datastore.BasicAuth" - }, - "oauth2": { - "$ref": "#/components/schemas/datastore.OAuth2" - }, - "type": { - "$ref": "#/components/schemas/datastore.EndpointAuthenticationType" - } - }, - "type": "object" - }, - "datastore.EndpointAuthenticationType": { - "enum": [ - "api_key", - "oauth2", - "basic_auth" - ], - "type": "string" - }, - "datastore.EndpointStatus": { - "enum": [ - "active", - "inactive", - "paused" - ], - "type": "string" - }, - "datastore.Event": { - "properties": { - "acknowledged_at": { - "type": "string" - }, - "app_id": { - "description": "Deprecated", - "type": "string" - }, - "created_at": { - "type": "string" - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "items": { - "type": "integer" - }, - "type": "array" - }, - "deleted_at": { - "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": { - "$ref": "#/components/schemas/datastore.Source" - }, - "status": { - "$ref": "#/components/schemas/datastore.EventStatus" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url_query_params": { - "type": "string" - } - }, - "type": "object" - }, - "datastore.EventDeliveryStatus": { - "enum": [ - "Scheduled", - "Processing", - "Discarded", - "Failure", - "Success", - "Retry" - ], - "type": "string" - }, - "datastore.EventStatus": { - "enum": [ - "Processing", - "Failure", - "Success", - "Retry", - "Pending" - ], - "type": "string" - }, - "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" - } - }, - "type": "object" - }, - "datastore.GooglePubSubConfig": { - "properties": { - "project_id": { - "type": "string" - }, - "service_account": { - "items": { - "type": "integer" - }, - "type": "array" - }, - "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" - }, - "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": { - "$ref": "#/components/schemas/datastore.KafkaAuth" - }, - "brokers": { - "items": { - "type": "string" - }, - "type": "array" - }, - "consumer_group_id": { - "type": "string" - }, - "topic_name": { - "type": "string" - } - }, - "type": "object" - }, - "datastore.M": { - "additionalProperties": 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.Metadata": { - "properties": { - "data": { - "description": "Data to be sent to endpoint.", - "items": { - "type": "integer" - }, - "type": "array" - }, - "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" - }, - "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" - }, - "subject": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "datastore.OAuth2AuthenticationType": { - "enum": [ - "shared_secret", - "client_assertion" - ], - "type": "string" - }, - "datastore.OAuth2ExpiryTimeUnit": { - "enum": [ - "seconds", - "milliseconds", - "minutes", - "hours" - ], - "type": "string" - }, - "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" - }, - "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" - } - }, - "type": "object" - }, - "datastore.PortalAuthType": { - "enum": [ - "refresh_token", - "static_token" - ], - "type": "string" - }, - "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": { - "type": "string" - }, - "endpoint_count": { - "type": "integer" - }, - "endpoints": { - "items": { - "type": "string" - }, - "type": "array" - }, - "endpoints_metadata": { - "items": { - "$ref": "#/components/schemas/datastore.Endpoint" - }, - "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.ProviderConfig": { - "properties": { - "twitter": { - "$ref": "#/components/schemas/datastore.TwitterProviderConfig" - } - }, - "type": "object" - }, - "datastore.PubSubConfig": { - "properties": { - "amqp": { - "$ref": "#/components/schemas/datastore.AmqpPubSubConfig" - }, - "google": { - "$ref": "#/components/schemas/datastore.GooglePubSubConfig" - }, - "kafka": { - "$ref": "#/components/schemas/datastore.KafkaPubSubConfig" - }, - "sqs": { - "$ref": "#/components/schemas/datastore.SQSPubSubConfig" - }, - "type": { - "$ref": "#/components/schemas/datastore.PubSubType" - }, - "workers": { - "type": "integer" - } - }, - "type": "object" - }, - "datastore.PubSubType": { - "enum": [ - "sqs", - "google", - "kafka", - "amqp" - ], - "type": "string" - }, - "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.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.Secret": { - "properties": { - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "expires_at": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "type": "object" - }, - "datastore.Source": { - "properties": { - "body_function": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "custom_response": { - "$ref": "#/components/schemas/datastore.CustomResponse" - }, - "deleted_at": { - "type": "string" - }, - "forward_headers": { - "items": { - "type": "string" - }, - "type": "array" - }, - "header_function": { - "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": { - "$ref": "#/components/schemas/datastore.ProviderConfig" - }, - "pub_sub": { - "$ref": "#/components/schemas/datastore.PubSubConfig" - }, - "type": { - "$ref": "#/components/schemas/datastore.SourceType" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - }, - "verifier": { - "$ref": "#/components/schemas/datastore.VerifierConfig" - } - }, - "type": "object" - }, - "datastore.SourceProvider": { - "enum": [ - "github", - "twitter", - "shopify" - ], - "type": "string" - }, - "datastore.SourceType": { - "enum": [ - "http", - "rest_api", - "pub_sub", - "db_change_stream" - ], - "type": "string" - }, - "datastore.StrategyProvider": { - "enum": [ - "linear", - "exponential" - ], - "type": "string" - }, - "datastore.SubscriptionType": { - "enum": [ - "cli", - "api" - ], - "type": "string" - }, - "datastore.TwitterProviderConfig": { - "properties": { - "crc_verified_at": { - "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": { - "$ref": "#/components/schemas/datastore.ApiKey" - }, - "basic_auth": { - "$ref": "#/components/schemas/datastore.BasicAuth" - }, - "hmac": { - "$ref": "#/components/schemas/datastore.HMac" - }, - "type": { - "$ref": "#/components/schemas/datastore.VerifierType" - } - }, - "type": "object" - }, - "datastore.VerifierType": { - "enum": [ - "noop", - "hmac", - "basic_auth", - "api_key" - ], - "type": "string" - }, - "handlers.Stub": { - "type": "object" - }, - "httpheader.HTTPHeader": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "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": { - "auth": { - "$ref": "#/components/schemas/models.AmqpAuth" - }, - "bindExchange": { - "$ref": "#/components/schemas/models.AmqpExchange" - }, - "deadLetterExchange": { - "type": "string" - }, - "host": { - "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", - "type": "object" - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "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.BulkUpdateFilterRequest": { - "properties": { - "body": { - "additionalProperties": true, - "type": "object" - }, - "event_type": { - "type": "string" - }, - "headers": { - "additionalProperties": true, - "type": "object" - }, - "uid": { - "type": "string" - } - }, - "required": [ - "uid" - ], - "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", - "type": "object" - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "type": "object" - }, - "endpoint_id": { - "description": "Specifies the endpoint to send this event to.", - "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", - "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)" - }, - "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)" - } - }, - "required": [ - "event_type" - ], - "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." - }, - "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", - "type": "object" - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "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": { - "$ref": "#/components/schemas/datastore.EndpointAuthentication" - }, - "content_type": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "description": { - "type": "string" - }, - "events": { - "type": "integer" - }, - "failure_rate": { - "type": "number" - }, - "http_timeout": { - "type": "integer" - }, - "mtls_client_cert": { - "allOf": [ - { - "$ref": "#/components/schemas/datastore.MtlsClientCert" - } - ], - "description": "mTLS client certificate configuration" - }, - "name": { - "type": "string" - }, - "owner_id": { - "type": "string" - }, - "project_id": { - "type": "string" - }, - "rate_limit": { - "type": "integer" - }, - "rate_limit_duration": { - "type": "integer" - }, - "secrets": { - "items": { - "$ref": "#/components/schemas/datastore.Secret" - }, - "type": "array" - }, - "slack_webhook_url": { - "type": "string" - }, - "status": { - "$ref": "#/components/schemas/datastore.EndpointStatus" - }, - "support_email": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "models.EventDeliveryResponse": { - "properties": { - "acknowledged_at": { - "type": "string" - }, - "cli_metadata": { - "$ref": "#/components/schemas/datastore.CLIMetadata" - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "delivery_mode": { - "$ref": "#/components/schemas/datastore.DeliveryMode" - }, - "description": { - "type": "string" - }, - "device_id": { - "type": "string" - }, - "device_metadata": { - "$ref": "#/components/schemas/datastore.Device" - }, - "endpoint_id": { - "type": "string" - }, - "endpoint_metadata": { - "$ref": "#/components/schemas/datastore.Endpoint" - }, - "event_id": { - "type": "string" - }, - "event_metadata": { - "$ref": "#/components/schemas/datastore.Event" - }, - "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": { - "$ref": "#/components/schemas/datastore.Metadata" - }, - "project_id": { - "type": "string" - }, - "source_metadata": { - "$ref": "#/components/schemas/datastore.Source" - }, - "status": { - "$ref": "#/components/schemas/datastore.EventDeliveryStatus" - }, - "subscription_id": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url_query_params": { - "type": "string" - } - }, - "type": "object" - }, - "models.EventResponse": { - "properties": { - "acknowledged_at": { - "type": "string" - }, - "app_id": { - "description": "Deprecated", - "type": "string" - }, - "created_at": { - "type": "string" - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "items": { - "type": "integer" - }, - "type": "array" - }, - "deleted_at": { - "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": { - "$ref": "#/components/schemas/datastore.Source" - }, - "status": { - "$ref": "#/components/schemas/datastore.EventStatus" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url_query_params": { - "type": "string" - } - }, - "type": "object" - }, - "models.EventTypeResponse": { - "properties": { - "category": { - "type": "string" - }, - "deprecated_at": { - "type": "string" - }, - "description": { - "type": "string" - }, - "json_schema": { - "items": { - "type": "integer" - }, - "type": "array" - }, - "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" - } - }, - "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", - "type": "object" - }, - "data": { - "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", - "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 \u0026 Header filters" - } - }, - "type": "object" - }, - "models.FilterResponse": { - "properties": { - "body": { - "$ref": "#/components/schemas/datastore.M" - }, - "event_type": { - "type": "string" - }, - "headers": { - "$ref": "#/components/schemas/datastore.M" - }, - "raw_body": { - "$ref": "#/components/schemas/datastore.M" - }, - "raw_headers": { - "$ref": "#/components/schemas/datastore.M" - }, - "subscription_id": { - "type": "string" - }, - "uid": { - "type": "string" - } - }, - "type": "object" - }, - "models.FilterSchema": { - "properties": { - "body": {}, - "header": {} - }, - "type": "object" - }, - "models.FunctionRequest": { - "properties": { - "function": { - "type": "string" - }, - "payload": { - "additionalProperties": {}, - "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": { - "items": { - "type": "integer" - }, - "type": "array" - }, - "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.MetaEventResponse": { - "properties": { - "attempt": { - "$ref": "#/components/schemas/datastore.MetaEventAttempt" - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "event_type": { - "type": "string" - }, - "metadata": { - "$ref": "#/components/schemas/datastore.Metadata" - }, - "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.PagedResponse": { - "properties": { - "content": {}, - "pagination": { - "$ref": "#/components/schemas/datastore.PaginationData" - } - }, - "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.SourceResponse": { - "properties": { - "body_function": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "custom_response": { - "$ref": "#/components/schemas/datastore.CustomResponse" - }, - "deleted_at": { - "type": "string" - }, - "forward_headers": { - "items": { - "type": "string" - }, - "type": "array" - }, - "header_function": { - "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": { - "$ref": "#/components/schemas/datastore.ProviderConfig" - }, - "pub_sub": { - "$ref": "#/components/schemas/datastore.PubSubConfig" - }, - "type": { - "$ref": "#/components/schemas/datastore.SourceType" - }, - "uid": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - }, - "verifier": { - "$ref": "#/components/schemas/datastore.VerifierConfig" - } - }, - "type": "object" - }, - "models.SubscriptionResponse": { - "properties": { - "alert_config": { - "allOf": [ - { - "$ref": "#/components/schemas/datastore.AlertConfiguration" - } - ], - "description": "subscription config" - }, - "created_at": { - "type": "string" - }, - "deleted_at": { - "type": "string" - }, - "delivery_mode": { - "$ref": "#/components/schemas/datastore.DeliveryMode" - }, - "device_metadata": { - "$ref": "#/components/schemas/datastore.Device" - }, - "endpoint_metadata": { - "$ref": "#/components/schemas/datastore.Endpoint" - }, - "filter_config": { - "$ref": "#/components/schemas/datastore.FilterConfiguration" - }, - "function": { - "type": "string" - }, - "name": { - "type": "string" - }, - "project_id": { - "type": "string" - }, - "rate_limit_config": { - "$ref": "#/components/schemas/datastore.RateLimitConfiguration" - }, - "retry_config": { - "$ref": "#/components/schemas/datastore.RetryConfiguration" - }, - "source_metadata": { - "$ref": "#/components/schemas/datastore.Source" - }, - "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 \u0026 Headers" - }, - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/models.FilterSchema" - } - ], - "description": "Sample test schema" - } - }, - "type": "object" - }, - "models.TestFilterRequest": { - "properties": { - "payload": { - "description": "Sample payload to test against the filter (required)" - } - }, - "required": [ - "payload" - ], - "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": { - "type": "string" - }, - "content_type": { - "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", - "type": "object" - } - }, - "type": "object" - }, - "models.UpdateFilterRequest": { - "properties": { - "body": { - "allOf": [ - { - "$ref": "#/components/schemas/datastore.M" - } - ], - "description": "Body matching criteria (optional)" - }, - "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" - } - }, - "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." - }, - "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": { - "in": "header", - "name": "Authorization", - "type": "apiKey" - } - } - }, - "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": "24.1.4" - }, - "openapi": "3.0.3", - "paths": { - "/v1/projects/{projectID}/endpoints": { - "get": { - "description": "This endpoint fetches an endpoints", - "operationId": "GetEndpoints", - "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", - "in": "query", - "name": "next_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The owner ID of the endpoint", - "in": "query", - "name": "ownerId", - "schema": { - "type": "string" - } - }, - { - "description": "The number of items to return per page", - "in": "query", - "name": "perPage", - "schema": { - "type": "integer" - } - }, - { - "description": "A pagination cursor to fetch the previous page of a list", - "in": "query", - "name": "prev_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The name of the endpoint", - "in": "query", - "name": "q", - "schema": { - "type": "string" - } - }, - { - "description": "Sort order, values are `ASC` or `DESC`, defaults to `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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "List all endpoints", - "tags": [ - "Endpoints" - ] - }, - "post": { - "description": "This endpoint creates an endpoint", - "operationId": "CreateEndpoint", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.CreateEndpoint" - } - } - }, - "description": "Endpoint Details", - "required": true, - "x-originalParamName": "endpoint" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Create an endpoint", - "tags": [ - "Endpoints" - ] - } - }, - "/v1/projects/{projectID}/endpoints/oauth2/test": { - "post": { - "description": "This endpoint tests the OAuth2 connection by attempting to exchange a token", - "operationId": "TestOAuth2Connection", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.TestOAuth2Request" - } - } - }, - "description": "OAuth2 Configuration", - "required": true, - "x-originalParamName": "oauth2" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Test OAuth2 connection", - "tags": [ - "Endpoints" - ] - } - }, - "/v1/projects/{projectID}/endpoints/{endpointID}": { - "delete": { - "description": "This endpoint deletes an endpoint", - "operationId": "DeleteEndpoint", - "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/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Delete endpoint", - "tags": [ - "Endpoints" - ] - }, - "get": { - "description": "This endpoint fetches an endpoint", - "operationId": "GetEndpoint", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Retrieve endpoint", - "tags": [ - "Endpoints" - ] - }, - "put": { - "description": "This endpoint updates an endpoint", - "operationId": "UpdateEndpoint", - "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" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.UpdateEndpoint" - } - } - }, - "description": "Endpoint Details", - "required": true, - "x-originalParamName": "endpoint" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Update an endpoint", - "tags": [ - "Endpoints" - ] - } - }, - "/v1/projects/{projectID}/endpoints/{endpointID}/activate": { - "post": { - "description": "Activated an inactive endpoint", - "operationId": "ActivateEndpoint", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Activate endpoint", - "tags": [ - "Endpoints" - ] - } - }, - "/v1/projects/{projectID}/endpoints/{endpointID}/expire_secret": { - "put": { - "description": "This endpoint expires and re-generates the endpoint secret.", - "operationId": "ExpireSecret", - "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" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ExpireSecret" - } - } - }, - "description": "Expire Secret Body Parameters", - "required": true, - "x-originalParamName": "endpoint" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Roll endpoint secret", - "tags": [ - "Endpoints" - ] - } - }, - "/v1/projects/{projectID}/endpoints/{endpointID}/pause": { - "put": { - "description": "Toggles an endpoint's status between active and paused states", - "operationId": "PauseEndpoint", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Pause endpoint", - "tags": [ - "Endpoints" - ] - } - }, - "/v1/projects/{projectID}/event-types": { - "get": { - "description": "This endpoint fetches the project's event types", - "operationId": "GetEventTypes", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Retrieves a project's event types", - "tags": [ - "EventTypes" - ] - }, - "post": { - "description": "This endpoint creates an event type", - "operationId": "CreateEventType", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.CreateEventType" - } - } - }, - "description": "Event Type Details", - "required": true, - "x-originalParamName": "eventType" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Create an event type", - "tags": [ - "EventTypes" - ] - } - }, - "/v1/projects/{projectID}/event-types/import": { - "post": { - "description": "This endpoint imports event types from an OpenAPI specification", - "operationId": "ImportOpenApiSpec", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImportOpenAPISpec" - } - } - }, - "description": "OpenAPI specification", - "required": true, - "x-originalParamName": "spec" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Import event types from OpenAPI spec", - "tags": [ - "EventTypes" - ] - } - }, - "/v1/projects/{projectID}/event-types/{eventTypeId}": { - "put": { - "description": "This endpoint updates an event type", - "operationId": "UpdateEventType", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.UpdateEventType" - } - } - }, - "description": "Event Type Details", - "required": true, - "x-originalParamName": "eventType" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Updates an event type", - "tags": [ - "EventTypes" - ] - } - }, - "/v1/projects/{projectID}/event-types/{eventTypeId}/deprecate": { - "post": { - "description": "This endpoint deprecates an event type", - "operationId": "DeprecateEventType", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Deprecates an event type", - "tags": [ - "EventTypes" - ] - } - }, - "/v1/projects/{projectID}/eventdeliveries": { - "get": { - "description": "This endpoint retrieves all event deliveries paginated.", - "operationId": "GetEventDeliveriesPaged", - "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", - "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" - } - }, - { - "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", - "in": "query", - "name": "next_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The number of items to return per page", - "in": "query", - "name": "perPage", - "schema": { - "type": "integer" - } - }, - { - "description": "A pagination cursor to fetch the previous page of a list", - "in": "query", - "name": "prev_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "in": "query", - "name": "sort", - "schema": { - "type": "string" - } - }, - { - "description": "The start date", - "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" - } - }, - { - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "List all event deliveries", - "tags": [ - "Event Deliveries" - ] - } - }, - "/v1/projects/{projectID}/eventdeliveries/batchretry": { - "post": { - "description": "This endpoint batch retries multiple event deliveries at once.", - "operationId": "BatchRetryEventDelivery", - "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", - "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" - } - }, - { - "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", - "in": "query", - "name": "next_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The number of items to return per page", - "in": "query", - "name": "perPage", - "schema": { - "type": "integer" - } - }, - { - "description": "A pagination cursor to fetch the previous page of a list", - "in": "query", - "name": "prev_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "in": "query", - "name": "sort", - "schema": { - "type": "string" - } - }, - { - "description": "The start date", - "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" - } - }, - { - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Batch retry event delivery", - "tags": [ - "Event Deliveries" - ] - } - }, - "/v1/projects/{projectID}/eventdeliveries/forceresend": { - "post": { - "description": "This endpoint enables you retry a previously successful event delivery", - "operationId": "ForceResendEventDeliveries", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.IDs" - } - } - }, - "description": "event delivery ids", - "required": true, - "x-originalParamName": "deliveryIds" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Force retry event delivery", - "tags": [ - "Event Deliveries" - ] - } - }, - "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}": { - "get": { - "description": "This endpoint fetches an event delivery.", - "operationId": "GetEventDelivery", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Retrieve an event delivery", - "tags": [ - "Event Deliveries" - ] - } - }, - "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts": { - "get": { - "description": "This endpoint fetches an app message's delivery attempts", - "operationId": "GetDeliveryAttempts", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "List delivery attempts", - "tags": [ - "Delivery Attempts" - ] - } - }, - "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts/{deliveryAttemptID}": { - "get": { - "description": "This endpoint fetches an app event delivery attempt", - "operationId": "GetDeliveryAttempt", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Retrieve a delivery attempt", - "tags": [ - "Delivery Attempts" - ] - } - }, - "/v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/resend": { - "put": { - "description": "This endpoint retries an event delivery.", - "operationId": "ResendEventDelivery", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Retry event delivery", - "tags": [ - "Event Deliveries" - ] - } - }, - "/v1/projects/{projectID}/events": { - "get": { - "description": "This endpoint fetches app events with pagination", - "operationId": "GetEventsPaged", - "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", - "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" - } - }, - { - "description": "IdempotencyKey to filter by", - "in": "query", - "name": "idempotencyKey", - "schema": { - "type": "string" - } - }, - { - "description": "A pagination cursor to fetch the next page of a list", - "in": "query", - "name": "next_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The number of items to return per page", - "in": "query", - "name": "perPage", - "schema": { - "type": "integer" - } - }, - { - "description": "A pagination cursor to fetch the previous page of a list", - "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`", - "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" - } - }, - { - "description": "The start date", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "List all events", - "tags": [ - "Events" - ] - }, - "post": { - "description": "This endpoint creates an endpoint event", - "operationId": "CreateEndpointEvent", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.CreateEvent" - } - } - }, - "description": "Event Details", - "required": true, - "x-originalParamName": "event" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Created" - }, - "400": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Create an event", - "tags": [ - "Events" - ] - } - }, - "/v1/projects/{projectID}/events/batchreplay": { - "post": { - "description": "This endpoint replays multiple events at once.", - "operationId": "BatchReplayEvents", - "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", - "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" - } - }, - { - "description": "IdempotencyKey to filter by", - "in": "query", - "name": "idempotencyKey", - "schema": { - "type": "string" - } - }, - { - "description": "A pagination cursor to fetch the next page of a list", - "in": "query", - "name": "next_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The number of items to return per page", - "in": "query", - "name": "perPage", - "schema": { - "type": "integer" - } - }, - { - "description": "A pagination cursor to fetch the previous page of a list", - "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`", - "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" - } - }, - { - "description": "The start date", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Batch replay events", - "tags": [ - "Events" - ] - } - }, - "/v1/projects/{projectID}/events/broadcast": { - "post": { - "description": "This endpoint creates a event that is broadcast to every endpoint whose subscription matches the given event type.", - "operationId": "CreateBroadcastEvent", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.BroadcastEvent" - } - } - }, - "description": "Broadcast Event Details", - "required": true, - "x-originalParamName": "event" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Create a broadcast event", - "tags": [ - "Events" - ] - } - }, - "/v1/projects/{projectID}/events/dynamic": { - "post": { - "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", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DynamicEvent" - } - } - }, - "description": "Event Details", - "required": true, - "x-originalParamName": "event" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/handlers.Stub" - } - } - }, - "description": "Created" - }, - "400": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Dynamic Events", - "tags": [ - "Events" - ] - } - }, - "/v1/projects/{projectID}/events/fanout": { - "post": { - "description": "This endpoint uses the owner_id to fan out an event to multiple endpoints.", - "operationId": "CreateEndpointFanoutEvent", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.FanoutEvent" - } - } - }, - "description": "Event Details", - "required": true, - "x-originalParamName": "event" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Created" - }, - "400": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Fan out an event", - "tags": [ - "Events" - ] - } - }, - "/v1/projects/{projectID}/events/{eventID}": { - "get": { - "description": "This endpoint retrieves an event", - "operationId": "GetEndpointEvent", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Retrieve an event", - "tags": [ - "Events" - ] - } - }, - "/v1/projects/{projectID}/events/{eventID}/replay": { - "put": { - "description": "This endpoint replays an event afresh assuming it is a new event.", - "operationId": "ReplayEndpointEvent", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Replay event", - "tags": [ - "Events" - ] - } - }, - "/v1/projects/{projectID}/meta-events": { - "get": { - "description": "This endpoint fetches meta events with pagination", - "operationId": "GetMetaEventsPaged", - "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", - "in": "query", - "name": "endDate", - "schema": { - "type": "string" - } - }, - { - "description": "A pagination cursor to fetch the next page of a list", - "in": "query", - "name": "next_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The number of items to return per page", - "in": "query", - "name": "perPage", - "schema": { - "type": "integer" - } - }, - { - "description": "A pagination cursor to fetch the previous page of a list", - "in": "query", - "name": "prev_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "in": "query", - "name": "sort", - "schema": { - "type": "string" - } - }, - { - "description": "The start date", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "List all meta events", - "tags": [ - "Meta Events" - ] - } - }, - "/v1/projects/{projectID}/meta-events/{metaEventID}": { - "get": { - "description": "This endpoint retrieves a meta event", - "operationId": "GetMetaEvent", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Retrieve a meta event", - "tags": [ - "Meta Events" - ] - } - }, - "/v1/projects/{projectID}/meta-events/{metaEventID}/resend": { - "put": { - "description": "This endpoint retries a meta event", - "operationId": "ResendMetaEvent", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Retry meta event", - "tags": [ - "Meta Events" - ] - } - }, - "/v1/projects/{projectID}/portal-links": { - "get": { - "description": "This endpoint fetches multiple portal links", - "operationId": "LoadPortalLinksPaged", - "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", - "in": "query", - "name": "next_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The owner ID of the endpoint", - "in": "query", - "name": "ownerId", - "schema": { - "type": "string" - } - }, - { - "description": "The number of items to return per page", - "in": "query", - "name": "perPage", - "schema": { - "type": "integer" - } - }, - { - "description": "A pagination cursor to fetch the previous page of a list", - "in": "query", - "name": "prev_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The name of the endpoint", - "in": "query", - "name": "q", - "schema": { - "type": "string" - } - }, - { - "description": "Sort order, values are `ASC` or `DESC`, defaults to `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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "List all portal links", - "tags": [ - "Portal Links" - ] - }, - "post": { - "description": "This endpoint creates a portal link", - "operationId": "CreatePortalLink", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/datastore.CreatePortalLinkRequest" - } - } - }, - "description": "Portal Link Details", - "required": true, - "x-originalParamName": "portallink" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Create a portal link", - "tags": [ - "Portal Links" - ] - } - }, - "/v1/projects/{projectID}/portal-links/{portalLinkID}": { - "get": { - "description": "This endpoint retrieves a portal link by its id.", - "operationId": "GetPortalLink", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Retrieve a portal link", - "tags": [ - "Portal Links" - ] - }, - "put": { - "description": "This endpoint updates a portal link", - "operationId": "UpdatePortalLink", - "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" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/datastore.UpdatePortalLinkRequest" - } - } - }, - "description": "Portal Link Details", - "required": true, - "x-originalParamName": "portallink" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Update a portal link", - "tags": [ - "Portal Links" - ] - } - }, - "/v1/projects/{projectID}/portal-links/{portalLinkID}/refresh_token": { - "get": { - "description": "This endpoint retrieves a portal link auth token", - "operationId": "RefreshPortalLinkAuthToken", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Get a portal link auth token", - "tags": [ - "Portal Links" - ] - } - }, - "/v1/projects/{projectID}/portal-links/{portalLinkID}/revoke": { - "put": { - "description": "This endpoint revokes a portal link", - "operationId": "RevokePortalLink", - "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/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Revoke a portal link", - "tags": [ - "Portal Links" - ] - } - }, - "/v1/projects/{projectID}/sources": { - "get": { - "description": "This endpoint fetches multiple sources", - "operationId": "LoadSourcesPaged", - "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", - "in": "query", - "name": "next_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The number of items to return per page", - "in": "query", - "name": "perPage", - "schema": { - "type": "integer" - } - }, - { - "description": "A pagination cursor to fetch the previous page of a list", - "in": "query", - "name": "prev_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The custom source provider e.g. twitter, shopify", - "in": "query", - "name": "provider", - "schema": { - "type": "string" - } - }, - { - "description": "Sort order, values are `ASC` or `DESC`, defaults to `DESC`", - "in": "query", - "name": "sort", - "schema": { - "type": "string" - } - }, - { - "description": "The source type e.g. http, pub_sub", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "List all sources", - "tags": [ - "Sources" - ] - }, - "post": { - "description": "This endpoint creates a source", - "operationId": "CreateSource", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.CreateSource" - } - } - }, - "description": "Source Details", - "required": true, - "x-originalParamName": "source" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Create a source", - "tags": [ - "Sources" - ] - } - }, - "/v1/projects/{projectID}/sources/test_function": { - "post": { - "description": "This endpoint validates that a filter will match a certain payload structure.", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.FunctionRequest" - } - } - }, - "description": "Function Details", - "required": true, - "x-originalParamName": "filter" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Validate source function", - "tags": [ - "Subscriptions" - ] - } - }, - "/v1/projects/{projectID}/sources/{sourceID}": { - "delete": { - "description": "This endpoint deletes a source", - "operationId": "DeleteSource", - "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/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Delete a source", - "tags": [ - "Sources" - ] - }, - "get": { - "description": "This endpoint retrieves a source by its id", - "operationId": "GetSource", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Retrieve a source", - "tags": [ - "Sources" - ] - }, - "put": { - "description": "This endpoint updates a source", - "operationId": "UpdateSource", - "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" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.UpdateSource" - } - } - }, - "description": "Source Details", - "required": true, - "x-originalParamName": "source" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Update a source", - "tags": [ - "Sources" - ] - } - }, - "/v1/projects/{projectID}/subscriptions": { - "get": { - "description": "This endpoint fetches all the subscriptions", - "operationId": "GetSubscriptions", - "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" - } - }, - { - "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", - "in": "query", - "name": "next_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "The number of items to return per page", - "in": "query", - "name": "perPage", - "schema": { - "type": "integer" - } - }, - { - "description": "A pagination cursor to fetch the previous page of a list", - "in": "query", - "name": "prev_page_cursor", - "schema": { - "type": "string" - } - }, - { - "description": "Sort order, values are `ASC` or `DESC`, defaults to `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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "List all subscriptions", - "tags": [ - "Subscriptions" - ] - }, - "post": { - "description": "This endpoint creates a subscriptions", - "operationId": "CreateSubscription", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.CreateSubscription" - } - } - }, - "description": "Subscription details", - "required": true, - "x-originalParamName": "subscription" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Create a subscription", - "tags": [ - "Subscriptions" - ] - } - }, - "/v1/projects/{projectID}/subscriptions/test_filter": { - "post": { - "description": "This endpoint validates that a filter will match a certain payload structure.", - "operationId": "TestSubscriptionFilter", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.TestFilter" - } - } - }, - "description": "Filter Details", - "required": true, - "x-originalParamName": "filter" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Validate subscription filter", - "tags": [ - "Subscriptions" - ] - } - }, - "/v1/projects/{projectID}/subscriptions/test_function": { - "post": { - "description": "This endpoint test runs a transform function against a payload.", - "operationId": "TestSubscriptionFunction", - "parameters": [ - { - "description": "Project ID", - "in": "path", - "name": "projectID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.FunctionRequest" - } - } - }, - "description": "Function Details", - "required": true, - "x-originalParamName": "filter" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Test a subscription function", - "tags": [ - "Subscriptions" - ] - } - }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}": { - "delete": { - "description": "This endpoint deletes a subscription", - "operationId": "DeleteSubscription", - "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/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Delete subscription", - "tags": [ - "Subscriptions" - ] - }, - "get": { - "description": "This endpoint retrieves a single subscription", - "operationId": "GetSubscription", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Retrieve a subscription", - "tags": [ - "Subscriptions" - ] - }, - "put": { - "description": "This endpoint updates a subscription", - "operationId": "UpdateSubscription", - "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" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.UpdateSubscription" - } - } - }, - "description": "Subscription Details", - "required": true, - "x-originalParamName": "subscription" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Update a subscription", - "tags": [ - "Subscriptions" - ] - } - }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters": { - "get": { - "description": "This endpoint fetches all filters for a subscription", - "operationId": "GetFilters", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "List all filters", - "tags": [ - "Filters" - ] - }, - "post": { - "description": "This endpoint creates a new filter for a subscription", - "operationId": "CreateFilter", - "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" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.CreateFilterRequest" - } - } - }, - "description": "Filter to create", - "required": true, - "x-originalParamName": "filter" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Create a new filter", - "tags": [ - "Filters" - ] - } - }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk": { - "post": { - "description": "This endpoint creates multiple filters for a subscription", - "operationId": "BulkCreateFilters", - "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" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/models.CreateFilterRequest" - }, - "type": "array" - } - } - }, - "description": "Filters to create", - "required": true, - "x-originalParamName": "filters" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Create multiple subscription filters", - "tags": [ - "Filters" - ] - } - }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk_update": { - "put": { - "description": "This endpoint updates multiple filters for a subscription", - "operationId": "BulkUpdateFilters", - "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" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/models.BulkUpdateFilterRequest" - }, - "type": "array" - } - } - }, - "description": "Filters to update", - "required": true, - "x-originalParamName": "filters" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Update multiple subscription filters", - "tags": [ - "Filters" - ] - } - }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/test/{eventType}": { - "post": { - "description": "This endpoint tests a filter against a payload", - "operationId": "TestFilter", - "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" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.TestFilterRequest" - } - } - }, - "description": "Payload to test", - "required": true, - "x-originalParamName": "payload" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Test a filter", - "tags": [ - "Filters" - ] - } - }, - "/v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/{filterID}": { - "delete": { - "description": "This endpoint deletes a filter", - "operationId": "DeleteFilter", - "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/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Delete a filter", - "tags": [ - "Filters" - ] - }, - "get": { - "description": "This endpoint retrieves a single filter", - "operationId": "GetFilter", - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Get a filter", - "tags": [ - "Filters" - ] - }, - "put": { - "description": "This endpoint updates an existing filter", - "operationId": "UpdateFilter", - "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" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.UpdateFilterRequest" - } - } - }, - "description": "Updated filter", - "required": true, - "x-originalParamName": "filter" - }, - "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": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/util.ServerResponse" - }, - { - "properties": { - "data": { - "$ref": "#/components/schemas/handlers.Stub" - } - }, - "type": "object" - } - ] - } - } - }, - "description": "Not Found" - } - }, - "security": [ - { - "ApiKeyAuth": [] - } - ], - "summary": "Update a filter", - "tags": [ - "Filters" - ] - } - } - }, - "servers": [ - { - "url": "https://dashboard.getconvoy.io/api" - } - ], - "tags": [ - { - "description": "Organisation related APIs", - "name": "Organisations" - }, - { - "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": "Project related APIs", - "name": "Projects" - }, - { - "description": "Portal Links related APIs", - "name": "Portal Links" - }, - { - "description": "Meta Events related APIs", - "name": "Meta Events" - } - ] -} \ No newline at end of file + "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": "24.1.4" + }, + "servers": [ + { + "url": "https://us.getconvoy.cloud/api", + "description": "US Region" + }, + { + "url": "https://eu.getconvoy.cloud/api", + "description": "EU Region" + } + ], + "paths": { + "/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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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" + } + } + ], + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Created" + }, + "400": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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/dynamic": { + "post": { + "parameters": [ + { + "description": "Project ID", + "in": "path", + "name": "projectID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/handlers.Stub" + } + } + }, + "description": "Created" + }, + "400": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Created" + }, + "400": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Not Found" + } + }, + "security": [ + { + "ApiKeyAuth": [] + } + ], + "tags": [ + "Onboard" + ], + "description": "This endpoint accepts a CSV file or JSON body to bulk-create endpoints with subscriptions", + "operationId": "BulkOnboard", + "requestBody": { + "content": { + "application/octet-stream": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Bad Request" + }, + "401": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "type": "object" + } + ] + } + } + }, + "description": "Unauthorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/util.ServerResponse" + }, + { + "properties": { + "data": { + "$ref": "#/components/schemas/handlers.Stub" + } + }, + "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" + } + } + }, + "components": { + "requestBodies": { + "models.FunctionRequest": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.FunctionRequest" + } + } + }, + "description": "Function Details", + "required": true + } + }, + "schemas": { + "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": { + "$ref": "#/components/schemas/datastore.AmqpCredentials" + }, + "bindedExchange": { + "type": "string" + }, + "deadLetterExchange": { + "type": "string" + }, + "port": { + "type": "string" + }, + "queue": { + "type": "string" + }, + "routingKey": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "vhost": { + "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.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": { + "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" + }, + "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": { + "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": { + "$ref": "#/components/schemas/datastore.EndpointAuthentication" + }, + "content_type": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "deleted_at": { + "type": "string" + }, + "description": { + "type": "string" + }, + "events": { + "type": "integer" + }, + "failure_rate": { + "type": "number" + }, + "http_timeout": { + "type": "integer" + }, + "mtls_client_cert": { + "allOf": [ + { + "$ref": "#/components/schemas/datastore.MtlsClientCert" + } + ], + "description": "mTLS client certificate configuration" + }, + "name": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "rate_limit": { + "type": "integer" + }, + "rate_limit_duration": { + "type": "integer" + }, + "secrets": { + "items": { + "$ref": "#/components/schemas/datastore.Secret" + }, + "type": "array" + }, + "slack_webhook_url": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/datastore.EndpointStatus" + }, + "support_email": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "datastore.EndpointAuthentication": { + "properties": { + "api_key": { + "$ref": "#/components/schemas/datastore.ApiKey" + }, + "basic_auth": { + "$ref": "#/components/schemas/datastore.BasicAuth" + }, + "oauth2": { + "$ref": "#/components/schemas/datastore.OAuth2" + }, + "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": { + "type": "string" + }, + "app_id": { + "description": "Deprecated", + "type": "string" + }, + "created_at": { + "type": "string" + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "items": { + "type": "integer" + }, + "type": "array" + }, + "deleted_at": { + "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": { + "$ref": "#/components/schemas/datastore.Source" + }, + "status": { + "$ref": "#/components/schemas/datastore.EventStatus" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "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" + } + }, + "type": "object" + }, + "datastore.GooglePubSubConfig": { + "properties": { + "project_id": { + "type": "string" + }, + "service_account": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "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" + }, + "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": { + "$ref": "#/components/schemas/datastore.KafkaAuth" + }, + "brokers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "consumer_group_id": { + "type": "string" + }, + "topic_name": { + "type": "string" + } + }, + "type": "object" + }, + "datastore.M": { + "additionalProperties": 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.Metadata": { + "properties": { + "data": { + "description": "Data to be sent to endpoint.", + "items": { + "type": "integer" + }, + "type": "array" + }, + "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" + }, + "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" + }, + "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" + } + }, + "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": { + "type": "string" + }, + "endpoint_count": { + "type": "integer" + }, + "endpoints": { + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints_metadata": { + "items": { + "$ref": "#/components/schemas/datastore.Endpoint" + }, + "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.ProviderConfig": { + "properties": { + "twitter": { + "$ref": "#/components/schemas/datastore.TwitterProviderConfig" + } + }, + "type": "object" + }, + "datastore.PubSubConfig": { + "properties": { + "amqp": { + "$ref": "#/components/schemas/datastore.AmqpPubSubConfig" + }, + "google": { + "$ref": "#/components/schemas/datastore.GooglePubSubConfig" + }, + "kafka": { + "$ref": "#/components/schemas/datastore.KafkaPubSubConfig" + }, + "sqs": { + "$ref": "#/components/schemas/datastore.SQSPubSubConfig" + }, + "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.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.Secret": { + "properties": { + "created_at": { + "type": "string" + }, + "deleted_at": { + "type": "string" + }, + "expires_at": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "datastore.Source": { + "properties": { + "body_function": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "custom_response": { + "$ref": "#/components/schemas/datastore.CustomResponse" + }, + "deleted_at": { + "type": "string" + }, + "forward_headers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "header_function": { + "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": { + "$ref": "#/components/schemas/datastore.ProviderConfig" + }, + "pub_sub": { + "$ref": "#/components/schemas/datastore.PubSubConfig" + }, + "type": { + "$ref": "#/components/schemas/datastore.SourceType" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + }, + "verifier": { + "$ref": "#/components/schemas/datastore.VerifierConfig" + } + }, + "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.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": { + "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": { + "$ref": "#/components/schemas/datastore.ApiKey" + }, + "basic_auth": { + "$ref": "#/components/schemas/datastore.BasicAuth" + }, + "hmac": { + "$ref": "#/components/schemas/datastore.HMac" + }, + "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": { + "type": "object" + }, + "httpheader.HTTPHeader": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "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", + "type": "object" + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "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, + "type": "object" + }, + "event_type": { + "type": "string" + }, + "headers": { + "additionalProperties": true, + "type": "object" + }, + "uid": { + "type": "string" + } + }, + "required": [ + "uid" + ], + "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", + "type": "object" + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "type": "object" + }, + "endpoint_id": { + "description": "Specifies the endpoint to send this event to.", + "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", + "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)" + }, + "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)" + } + }, + "required": [ + "event_type" + ], + "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." + }, + "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", + "type": "object" + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "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": { + "$ref": "#/components/schemas/datastore.EndpointAuthentication" + }, + "content_type": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "deleted_at": { + "type": "string" + }, + "description": { + "type": "string" + }, + "events": { + "type": "integer" + }, + "failure_rate": { + "type": "number" + }, + "http_timeout": { + "type": "integer" + }, + "mtls_client_cert": { + "allOf": [ + { + "$ref": "#/components/schemas/datastore.MtlsClientCert" + } + ], + "description": "mTLS client certificate configuration" + }, + "name": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "rate_limit": { + "type": "integer" + }, + "rate_limit_duration": { + "type": "integer" + }, + "secrets": { + "items": { + "$ref": "#/components/schemas/datastore.Secret" + }, + "type": "array" + }, + "slack_webhook_url": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/datastore.EndpointStatus" + }, + "support_email": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "models.EventDeliveryResponse": { + "properties": { + "acknowledged_at": { + "type": "string" + }, + "cli_metadata": { + "$ref": "#/components/schemas/datastore.CLIMetadata" + }, + "created_at": { + "type": "string" + }, + "deleted_at": { + "type": "string" + }, + "delivery_mode": { + "$ref": "#/components/schemas/datastore.DeliveryMode" + }, + "description": { + "type": "string" + }, + "device_id": { + "type": "string" + }, + "device_metadata": { + "$ref": "#/components/schemas/datastore.Device" + }, + "endpoint_id": { + "type": "string" + }, + "endpoint_metadata": { + "$ref": "#/components/schemas/datastore.Endpoint" + }, + "event_id": { + "type": "string" + }, + "event_metadata": { + "$ref": "#/components/schemas/datastore.Event" + }, + "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": { + "$ref": "#/components/schemas/datastore.Metadata" + }, + "project_id": { + "type": "string" + }, + "source_metadata": { + "$ref": "#/components/schemas/datastore.Source" + }, + "status": { + "$ref": "#/components/schemas/datastore.EventDeliveryStatus" + }, + "subscription_id": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url_query_params": { + "type": "string" + } + }, + "type": "object" + }, + "models.EventResponse": { + "properties": { + "acknowledged_at": { + "type": "string" + }, + "app_id": { + "description": "Deprecated", + "type": "string" + }, + "created_at": { + "type": "string" + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "items": { + "type": "integer" + }, + "type": "array" + }, + "deleted_at": { + "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": { + "$ref": "#/components/schemas/datastore.Source" + }, + "status": { + "$ref": "#/components/schemas/datastore.EventStatus" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url_query_params": { + "type": "string" + } + }, + "type": "object" + }, + "models.EventTypeResponse": { + "properties": { + "category": { + "type": "string" + }, + "deprecated_at": { + "type": "string" + }, + "description": { + "type": "string" + }, + "json_schema": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "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" + } + }, + "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", + "type": "object" + }, + "data": { + "description": "Data is an arbitrary JSON value that gets sent as the body of the\nwebhook to the endpoints", + "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" + }, + "event_type": { + "type": "string" + }, + "headers": { + "$ref": "#/components/schemas/datastore.M" + }, + "raw_body": { + "$ref": "#/components/schemas/datastore.M" + }, + "raw_headers": { + "$ref": "#/components/schemas/datastore.M" + }, + "subscription_id": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "models.FilterSchema": { + "properties": { + "body": {}, + "header": {} + }, + "type": "object" + }, + "models.FunctionRequest": { + "properties": { + "function": { + "type": "string" + }, + "payload": { + "additionalProperties": {}, + "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": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "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.MetaEventResponse": { + "properties": { + "attempt": { + "$ref": "#/components/schemas/datastore.MetaEventAttempt" + }, + "created_at": { + "type": "string" + }, + "deleted_at": { + "type": "string" + }, + "event_type": { + "type": "string" + }, + "metadata": { + "$ref": "#/components/schemas/datastore.Metadata" + }, + "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.PagedResponse": { + "properties": { + "content": {}, + "pagination": { + "allOf": [ + { + "$ref": "#/components/schemas/datastore.PaginationData" + } + ], + "nullable": true + } + }, + "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.SourceResponse": { + "properties": { + "body_function": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "custom_response": { + "$ref": "#/components/schemas/datastore.CustomResponse" + }, + "deleted_at": { + "type": "string" + }, + "forward_headers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "header_function": { + "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": { + "$ref": "#/components/schemas/datastore.ProviderConfig" + }, + "pub_sub": { + "$ref": "#/components/schemas/datastore.PubSubConfig" + }, + "type": { + "$ref": "#/components/schemas/datastore.SourceType" + }, + "uid": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + }, + "verifier": { + "$ref": "#/components/schemas/datastore.VerifierConfig" + } + }, + "type": "object" + }, + "models.SubscriptionResponse": { + "properties": { + "alert_config": { + "allOf": [ + { + "$ref": "#/components/schemas/datastore.AlertConfiguration" + } + ], + "description": "subscription config" + }, + "created_at": { + "type": "string" + }, + "deleted_at": { + "type": "string" + }, + "delivery_mode": { + "$ref": "#/components/schemas/datastore.DeliveryMode" + }, + "device_metadata": { + "$ref": "#/components/schemas/datastore.Device" + }, + "endpoint_metadata": { + "$ref": "#/components/schemas/datastore.Endpoint" + }, + "filter_config": { + "$ref": "#/components/schemas/datastore.FilterConfiguration" + }, + "function": { + "type": "string" + }, + "name": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "rate_limit_config": { + "$ref": "#/components/schemas/datastore.RateLimitConfiguration" + }, + "retry_config": { + "$ref": "#/components/schemas/datastore.RetryConfiguration" + }, + "source_metadata": { + "$ref": "#/components/schemas/datastore.Source" + }, + "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 the filter (required)" + } + }, + "required": [ + "payload" + ], + "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", + "type": "object" + } + }, + "type": "object" + }, + "models.UpdateFilterRequest": { + "properties": { + "body": { + "allOf": [ + { + "$ref": "#/components/schemas/datastore.M" + } + ], + "description": "Body matching criteria (optional)" + }, + "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" + } + }, + "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." + }, + "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": { + "in": "header", + "name": "Authorization", + "type": "apiKey" + } + } + }, + "tags": [ + { + "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" + } + ] +} diff --git a/docs/v3/openapi3.yaml b/docs/v3/openapi3.yaml index c1d677a008..a0196c303c 100644 --- a/docs/v3/openapi3.yaml +++ b/docs/v3/openapi3.yaml @@ -1,6610 +1,6896 @@ -components: - schemas: - 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: - auth: - $ref: '#/components/schemas/datastore.AmqpCredentials' - bindedExchange: - type: string - deadLetterExchange: - type: string - host: - type: string - port: - type: string - queue: - type: string - routingKey: - type: string - schema: - type: string - vhost: - 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.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 - IDs of endpoints in this portal link - items: +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: 24.1.4 +servers: + - url: 'https://us.getconvoy.cloud/api' + description: US Region + - url: https://eu.getconvoy.cloud/api + description: EU Region +paths: + '/v1/projects/{projectID}/endpoints': + get: + parameters: + - description: Project ID + in: path + name: projectID + required: true + schema: 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: - 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' - 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 - datastore.Device: - properties: - created_at: - type: string - deleted_at: - 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 - datastore.EncodingType: - enum: - - base64 - - hex - type: string - datastore.Endpoint: - properties: - advanced_signatures: - type: boolean - authentication: - $ref: '#/components/schemas/datastore.EndpointAuthentication' - content_type: - type: string - created_at: - type: string - deleted_at: - type: string - description: - type: string - events: - type: integer - failure_rate: - type: number - http_timeout: - type: integer - mtls_client_cert: - allOf: - - $ref: '#/components/schemas/datastore.MtlsClientCert' - description: mTLS client certificate configuration - name: - type: string - owner_id: - type: string - project_id: - type: string - rate_limit: - type: integer - rate_limit_duration: - type: integer - secrets: - items: - $ref: '#/components/schemas/datastore.Secret' - type: array - slack_webhook_url: - type: string - status: - $ref: '#/components/schemas/datastore.EndpointStatus' - support_email: - type: string - uid: - type: string - updated_at: - type: string - url: - type: string - type: object - datastore.EndpointAuthentication: - properties: - api_key: - $ref: '#/components/schemas/datastore.ApiKey' - basic_auth: - $ref: '#/components/schemas/datastore.BasicAuth' - oauth2: - $ref: '#/components/schemas/datastore.OAuth2' - type: - $ref: '#/components/schemas/datastore.EndpointAuthenticationType' - type: object - datastore.EndpointAuthenticationType: - enum: - - api_key - - oauth2 - - basic_auth - type: string - datastore.EndpointStatus: - enum: - - active - - inactive - - paused - type: string - datastore.Event: - properties: - acknowledged_at: - type: string - app_id: - description: Deprecated - type: string - created_at: - type: string - data: - description: |- - Data is an arbitrary JSON value that gets sent as the body of the - webhook to the endpoints - items: + - 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 - type: array - deleted_at: - type: string - endpoint_metadata: - items: - $ref: '#/components/schemas/datastore.Endpoint' - type: array - endpoints: - items: + - description: A pagination cursor to fetch the previous page of a list + example: 01H0JATTVCXZK8FRDX1M1JN3QY + in: query + name: prev_page_cursor + schema: 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: - $ref: '#/components/schemas/datastore.Source' - status: - $ref: '#/components/schemas/datastore.EventStatus' - uid: - type: string - updated_at: - type: string - url_query_params: - type: string - type: object - datastore.EventDeliveryStatus: - enum: - - Scheduled - - Processing - - Discarded - - Failure - - Success - - Retry - type: string - datastore.EventStatus: - enum: - - Processing - - Failure - - Success - - Retry - - Pending - type: string - datastore.FilterConfiguration: - properties: - event_types: - items: + - 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: OK + '400': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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 + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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.000Z' + 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.000Z' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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.000Z' + 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.000Z' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: OK + '400': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: OK + '400': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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.000Z' + 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.000Z' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Created + '400': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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.000Z' + 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.000Z' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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/dynamic': + post: + parameters: + - description: Project ID + in: path + name: projectID + required: true + schema: + type: string + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/handlers.Stub' + description: Created + '400': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Created + '400': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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.000Z' + 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.000Z' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Not Found + security: + - ApiKeyAuth: [] + tags: + - Onboard + description: >- + This endpoint accepts a CSV file or JSON body to bulk-create endpoints with subscriptions + operationId: BulkOnboard + requestBody: + content: + application/octet-stream: + schema: + format: binary + type: string + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: OK + '400': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: OK + '400': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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 - 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 - type: object - datastore.GooglePubSubConfig: - properties: - project_id: - type: string - service_account: - items: - type: integer - type: array - 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 - 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: - $ref: '#/components/schemas/datastore.KafkaAuth' - brokers: - items: + - description: source id + in: path + name: sourceID + required: true + schema: type: string - type: array - consumer_group_id: - type: string - topic_name: - type: string - type: object - datastore.M: - additionalProperties: 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.Metadata: - properties: - data: - description: Data to be sent to endpoint. - items: - type: integer - type: array - 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 - an 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 - 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 - subject: - type: string - url: - type: string - type: object - datastore.OAuth2AuthenticationType: - enum: - - shared_secret - - client_assertion - type: string - datastore.OAuth2ExpiryTimeUnit: - enum: - - seconds - - milliseconds - - minutes - - hours - type: string - 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 - 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 - type: object - datastore.PortalAuthType: - enum: - - refresh_token - - static_token - type: string - 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: - type: string - endpoint_count: - type: integer - endpoints: - items: + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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 - type: array - endpoints_metadata: - items: - $ref: '#/components/schemas/datastore.Endpoint' - 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.ProviderConfig: - properties: - twitter: - $ref: '#/components/schemas/datastore.TwitterProviderConfig' - type: object - datastore.PubSubConfig: - properties: - amqp: - $ref: '#/components/schemas/datastore.AmqpPubSubConfig' - google: - $ref: '#/components/schemas/datastore.GooglePubSubConfig' - kafka: - $ref: '#/components/schemas/datastore.KafkaPubSubConfig' - sqs: - $ref: '#/components/schemas/datastore.SQSPubSubConfig' - type: - $ref: '#/components/schemas/datastore.PubSubType' - workers: - type: integer - type: object - datastore.PubSubType: - enum: - - sqs - - google - - kafka - - amqp - type: string - 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.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.Secret: - properties: - created_at: - type: string - deleted_at: - type: string - expires_at: - type: string - uid: - type: string - updated_at: - type: string - value: - type: string - type: object - datastore.Source: - properties: - body_function: - type: string - created_at: - type: string - custom_response: - $ref: '#/components/schemas/datastore.CustomResponse' - deleted_at: - type: string - forward_headers: - items: + - in: query + name: direction + schema: + enum: + - next + - prev type: string - type: array - header_function: - type: string - idempotency_keys: - items: + 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 - 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: - $ref: '#/components/schemas/datastore.ProviderConfig' - pub_sub: - $ref: '#/components/schemas/datastore.PubSubConfig' - type: - $ref: '#/components/schemas/datastore.SourceType' - uid: - type: string - updated_at: - type: string - url: - type: string - verifier: - $ref: '#/components/schemas/datastore.VerifierConfig' - type: object - datastore.SourceProvider: - enum: - - github - - twitter - - shopify - type: string - datastore.SourceType: - enum: - - http - - rest_api - - pub_sub - - db_change_stream - type: string - datastore.StrategyProvider: - enum: - - linear - - exponential - type: string - datastore.SubscriptionType: - enum: - - cli - - api - type: string - datastore.TwitterProviderConfig: - properties: - crc_verified_at: - 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 - IDs of endpoints in this portal link - items: + - 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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 - 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: - $ref: '#/components/schemas/datastore.ApiKey' - basic_auth: - $ref: '#/components/schemas/datastore.BasicAuth' - hmac: - $ref: '#/components/schemas/datastore.HMac' - type: - $ref: '#/components/schemas/datastore.VerifierType' - type: object - datastore.VerifierType: - enum: - - noop - - hmac - - basic_auth - - api_key - type: string - handlers.Stub: - type: object - httpheader.HTTPHeader: - additionalProperties: - items: - type: string - type: array - 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: - auth: - $ref: '#/components/schemas/models.AmqpAuth' - bindExchange: - $ref: '#/components/schemas/models.AmqpExchange' - deadLetterExchange: - type: string - host: - 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: + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: Specifies custom headers you want convoy to add when the event - is dispatched to your endpoint - type: object - data: - description: |- - Data is an arbitrary JSON value that gets sent as the body of the - webhook to the endpoints - 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.BulkUpdateFilterRequest: - properties: - body: - additionalProperties: true - type: object - event_type: - type: string - headers: - additionalProperties: true - type: object - uid: - type: string - required: - - uid - type: object - models.CreateEndpoint: - properties: - advanced_signatures: - description: |- - Convoy supports two [signature formats](https://getconvoy.io/docs/product-manual/signatures) - -- 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 - shouldn't be needed often because webhook endpoints usually should be exposed to - the 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 - the 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 - [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 - the 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 - can receive failure notifications on a slack channel. - type: string - support_email: - description: |- - Endpoint developers support email. This is used for communicating endpoint state - changes. 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 - not supported. - type: string - type: object - models.CreateEvent: - properties: - app_id: - description: Deprecated but necessary for backward compatibility. - type: string - custom_headers: - additionalProperties: + - 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/handlers.Stub' + type: object + description: OK + '400': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: Specifies custom headers you want convoy to add when the event - is dispatched to your endpoint - type: object - data: - description: |- - Data is an arbitrary JSON value that gets sent as the body of the - webhook to the endpoints - type: object - endpoint_id: - description: Specifies the endpoint to send this event to. - 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 - 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) - 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) - required: - - event_type - type: object - models.CreateSource: - properties: - body_function: - description: |- - Function is a javascript function used to mutate the payload - immediately 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 - webhooks project sources only. - header_function: - description: |- - Function is a javascript function used to mutate the headers - immediately after ingesting an event - type: string - idempotency_keys: - description: |- - IdempotencyKeys are used to specify parts of a webhook request to uniquely - identify the event in an incoming webhooks project. - items: + - description: subscription id + in: path + name: subscriptionID + required: true + schema: 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 - webhooks 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 - webhooks projects. If set, type is required and match the verifier - type 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 - to 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: + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: Specifies custom headers you want convoy to add when the event - is dispatched to your endpoint - type: object - data: - description: |- - Data is an arbitrary JSON value that gets sent as the body of the - webhook to the endpoints - 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: + - description: Subscription ID + in: path + name: subscriptionID + required: true + schema: 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 - not 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: - $ref: '#/components/schemas/datastore.EndpointAuthentication' - content_type: - type: string - created_at: - type: string - deleted_at: - type: string - description: - type: string - events: - type: integer - failure_rate: - type: number - http_timeout: - type: integer - mtls_client_cert: - allOf: - - $ref: '#/components/schemas/datastore.MtlsClientCert' - description: mTLS client certificate configuration - name: - type: string - owner_id: - type: string - project_id: - type: string - rate_limit: - type: integer - rate_limit_duration: - type: integer - secrets: - items: - $ref: '#/components/schemas/datastore.Secret' - type: array - slack_webhook_url: - type: string - status: - $ref: '#/components/schemas/datastore.EndpointStatus' - support_email: - type: string - uid: - type: string - updated_at: - type: string - url: - type: string - type: object - models.EventDeliveryResponse: - properties: - acknowledged_at: - type: string - cli_metadata: - $ref: '#/components/schemas/datastore.CLIMetadata' - created_at: - type: string - deleted_at: - type: string - delivery_mode: - $ref: '#/components/schemas/datastore.DeliveryMode' - description: - type: string - device_id: - type: string - device_metadata: - $ref: '#/components/schemas/datastore.Device' - endpoint_id: - type: string - endpoint_metadata: - $ref: '#/components/schemas/datastore.Endpoint' - event_id: - type: string - event_metadata: - $ref: '#/components/schemas/datastore.Event' - 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: - $ref: '#/components/schemas/datastore.Metadata' - project_id: - type: string - source_metadata: - $ref: '#/components/schemas/datastore.Source' - status: - $ref: '#/components/schemas/datastore.EventDeliveryStatus' - subscription_id: - type: string - uid: - type: string - updated_at: - type: string - url_query_params: - type: string - type: object - models.EventResponse: - properties: - acknowledged_at: - type: string - app_id: - description: Deprecated - type: string - created_at: - type: string - data: - description: |- - Data is an arbitrary JSON value that gets sent as the body of the - webhook to the endpoints - items: - type: integer - type: array - deleted_at: - type: string - endpoint_metadata: - items: - $ref: '#/components/schemas/datastore.Endpoint' - type: array - endpoints: - items: + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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 - 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: - $ref: '#/components/schemas/datastore.Source' - status: - $ref: '#/components/schemas/datastore.EventStatus' - uid: - type: string - updated_at: - type: string - url_query_params: - type: string - type: object - models.EventTypeResponse: - properties: - category: - type: string - deprecated_at: - type: string - description: - type: string - json_schema: - items: - type: integer - type: array - name: - type: string - uid: - type: string - type: object - models.ExpireSecret: - properties: - expiration: - description: |- - Amount of time to wait before expiring the old endpoint secret. - If AdvancedSignatures is turned on for the project, signatures for both secrets will be generated up until - the 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' - type: object - models.FanoutEvent: - properties: - custom_headers: - additionalProperties: + - description: Subscription ID + in: path + name: subscriptionID + required: true + schema: type: string - description: Specifies custom headers you want convoy to add when the event - is dispatched to your endpoint - type: object - data: - description: |- - Data is an arbitrary JSON value that gets sent as the body of the - webhook to the endpoints - 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: + - description: Event Type + in: path + name: eventType + required: true + schema: 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' - event_type: - type: string - headers: - $ref: '#/components/schemas/datastore.M' - raw_body: - $ref: '#/components/schemas/datastore.M' - raw_headers: - $ref: '#/components/schemas/datastore.M' - subscription_id: - type: string - uid: - type: string - type: object - models.FilterSchema: - properties: - body: {} - header: {} - type: object + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: OK + '400': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Bad Request + '401': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + type: object + description: Unauthorized + '404': + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/util.ServerResponse' + - properties: + data: + $ref: '#/components/schemas/handlers.Stub' + 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 +components: + requestBodies: models.FunctionRequest: + content: + application/json: + schema: + $ref: '#/components/schemas/models.FunctionRequest' + description: Function Details + required: true + schemas: + datastore.AlertConfiguration: properties: - function: - type: string - payload: - additionalProperties: {} - type: object - type: + count: + type: integer + threshold: type: string type: object - models.FunctionResponse: - properties: - log: - items: - type: string - type: array - payload: {} - type: object - models.GooglePubSubConfig: + datastore.AmqpCredentials: properties: - project_id: + password: type: string - service_account: - items: - type: integer - type: array - subscription_id: + user: type: string type: object - models.HMac: + datastore.AmqpPubSubConfig: properties: - encoding: - $ref: '#/components/schemas/datastore.EncodingType' - hash: + host: type: string - header: + auth: + $ref: '#/components/schemas/datastore.AmqpCredentials' + bindedExchange: type: string - secret: + deadLetterExchange: 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: + port: type: string - type: object - models.KafkaAuth: - properties: - hash: + queue: type: string - password: + routingKey: type: string - tls: - type: boolean - type: + schema: type: string - username: + vhost: type: string type: object - models.KafkaPubSubConfig: + datastore.ApiKey: properties: - auth: - $ref: '#/components/schemas/models.KafkaAuth' - brokers: - items: - type: string - type: array - consumer_group_id: + header_name: type: string - topic_name: + header_value: type: string type: object - models.MetaEventResponse: + datastore.BasicAuth: properties: - attempt: - $ref: '#/components/schemas/datastore.MetaEventAttempt' - created_at: + password: type: string - deleted_at: + username: type: string + type: object + datastore.CLIMetadata: + properties: event_type: type: string - metadata: - $ref: '#/components/schemas/datastore.Metadata' - project_id: + source_id: type: string - status: - $ref: '#/components/schemas/datastore.EventDeliveryStatus' - uid: + type: object + datastore.CreatePortalLinkRequest: + properties: + auth_type: type: string - updated_at: + can_manage_endpoint: + description: >- + Specify whether endpoint management can be done through the Portal Link UI + type: boolean + endpoints: + description: |- + Deprecated + IDs 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 - models.MtlsClientCert: + datastore.CustomResponse: properties: - client_cert: - description: ClientCert is the client certificate PEM string + body: type: string - client_key: - description: ClientKey is the client private key PEM string + content_type: type: string type: object - models.OAuth2: + datastore.DeliveryAttempt: properties: - audience: + api_version: type: string - authentication_type: + created_at: type: string - client_id: + deleted_at: type: string - client_secret: + endpoint_id: type: string - expiry_time_unit: - description: Expiry time unit (seconds, milliseconds, minutes, hours) + error: type: string - field_mapping: - allOf: - - $ref: '#/components/schemas/models.OAuth2FieldMapping' - description: Field mapping for flexible token response parsing - grant_type: + http_status: type: string - issuer: + ip_address: type: string - scope: + method: type: string - signing_algorithm: + msg_id: type: string - signing_key: - $ref: '#/components/schemas/models.OAuth2SigningKey' - subject: + project_id: type: string - url: + request_http_header: + $ref: '#/components/schemas/datastore.HttpHeader' + response_data: type: string - type: object - models.OAuth2FieldMapping: - properties: - access_token: - description: Field name for access token (e.g., "accessToken", "access_token", - "token") + response_http_header: + $ref: '#/components/schemas/datastore.HttpHeader' + status: + type: boolean + uid: type: string - expires_in: - description: Field name for expiry time (e.g., "expiresIn", "expires_in", - "expiresAt") + updated_at: type: string - token_type: - description: Field name for token type (e.g., "tokenType", "token_type") + url: type: string type: object - models.OAuth2SigningKey: + datastore.DeliveryMode: + enum: + - at_least_once + - at_most_once + type: string + x-enum-varnames: + - AtLeastOnceDeliveryMode + - AtMostOnceDeliveryMode + datastore.Device: 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) + created_at: type: string - dq: - description: RSA second factor CRT exponent (RSA private key only) + deleted_at: type: string - e: - description: RSA public exponent (RSA only) + endpoint_id: type: string - kid: - description: Key ID + host_name: type: string - kty: - description: 'Key type: "EC" or "RSA"' + last_seen_at: type: string - "n": - description: RSA key fields + project_id: type: string - p: - description: RSA first prime factor (RSA private key only) + status: + $ref: '#/components/schemas/datastore.DeviceStatus' + uid: type: string - q: - description: RSA second prime factor (RSA private key only) + updated_at: type: string - qi: - description: RSA first CRT coefficient (RSA private key only) + 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: + $ref: '#/components/schemas/datastore.EndpointAuthentication' + content_type: type: string - x: - description: X coordinate (EC only) + created_at: type: string - "y": - description: Y coordinate (EC only) + deleted_at: type: string - type: object - models.PagedResponse: - properties: - content: {} - pagination: - $ref: '#/components/schemas/datastore.PaginationData' - 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: + description: + type: string + events: type: integer - duration: + failure_rate: + type: number + http_timeout: 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 + mtls_client_cert: + allOf: + - $ref: '#/components/schemas/datastore.MtlsClientCert' + description: mTLS client certificate configuration + name: type: string - interval_seconds: - description: Used to specify a time in seconds for how long to wait between - event delivery retries, + owner_id: + type: string + project_id: + type: string + rate_limit: type: integer - retry_count: - description: Used to specify the max number of retries + rate_limit_duration: type: integer - type: - allOf: - - $ref: '#/components/schemas/datastore.StrategyProvider' - description: Retry Strategy type - type: object - models.SQSPubSubConfig: - properties: - access_key_id: + secrets: + items: + $ref: '#/components/schemas/datastore.Secret' + type: array + slack_webhook_url: type: string - default_region: + status: + $ref: '#/components/schemas/datastore.EndpointStatus' + support_email: type: string - queue_name: + uid: type: string - secret_key: + updated_at: + type: string + url: type: string type: object - models.SourceResponse: + datastore.EndpointAuthentication: properties: - body_function: + api_key: + $ref: '#/components/schemas/datastore.ApiKey' + basic_auth: + $ref: '#/components/schemas/datastore.BasicAuth' + oauth2: + $ref: '#/components/schemas/datastore.OAuth2' + 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: + type: string + app_id: + description: Deprecated type: string created_at: type: string - custom_response: - $ref: '#/components/schemas/datastore.CustomResponse' + data: + description: |- + Data is an arbitrary JSON value that gets sent as the body of the + webhook to the endpoints + items: + type: integer + type: array deleted_at: type: string - forward_headers: + endpoint_metadata: items: - type: string + $ref: '#/components/schemas/datastore.Endpoint' type: array - header_function: - type: string - idempotency_keys: + endpoints: items: type: string type: array - is_disabled: - type: boolean - mask_id: + event_type: type: string - name: + headers: + $ref: '#/components/schemas/httpheader.HTTPHeader' + idempotency_key: + type: string + is_duplicate_event: + type: boolean + metadata: type: string project_id: type: string - provider: - $ref: '#/components/schemas/datastore.SourceProvider' - provider_config: - $ref: '#/components/schemas/datastore.ProviderConfig' - pub_sub: - $ref: '#/components/schemas/datastore.PubSubConfig' - type: - $ref: '#/components/schemas/datastore.SourceType' + raw: + type: string + source_id: + type: string + source_metadata: + $ref: '#/components/schemas/datastore.Source' + status: + $ref: '#/components/schemas/datastore.EventStatus' uid: type: string updated_at: type: string - url: + url_query_params: type: string - verifier: - $ref: '#/components/schemas/datastore.VerifierConfig' type: object - models.SubscriptionResponse: + 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: - alert_config: - allOf: - - $ref: '#/components/schemas/datastore.AlertConfiguration' - description: subscription config - created_at: + 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 + type: object + datastore.GooglePubSubConfig: + properties: + project_id: type: string - deleted_at: + service_account: + items: + type: integer + type: array + subscription_id: type: string - delivery_mode: - $ref: '#/components/schemas/datastore.DeliveryMode' - device_metadata: - $ref: '#/components/schemas/datastore.Device' - endpoint_metadata: - $ref: '#/components/schemas/datastore.Endpoint' - filter_config: - $ref: '#/components/schemas/datastore.FilterConfiguration' - function: + type: object + datastore.HMac: + properties: + encoding: + $ref: '#/components/schemas/datastore.EncodingType' + hash: type: string - name: + header: type: string - project_id: + secret: type: string - rate_limit_config: - $ref: '#/components/schemas/datastore.RateLimitConfiguration' - retry_config: - $ref: '#/components/schemas/datastore.RetryConfiguration' - source_metadata: - $ref: '#/components/schemas/datastore.Source' + type: object + datastore.HttpHeader: + additionalProperties: + type: string + type: object + datastore.KafkaAuth: + properties: + hash: + type: string + password: + type: string + tls: + type: boolean type: - $ref: '#/components/schemas/datastore.SubscriptionType' - uid: type: string - updated_at: + username: type: string type: object - models.TestFilter: + datastore.KafkaPubSubConfig: properties: - request: - allOf: - - $ref: '#/components/schemas/models.FilterSchema' - description: Same Request & Headers - schema: - allOf: - - $ref: '#/components/schemas/models.FilterSchema' - description: Sample test schema + auth: + $ref: '#/components/schemas/datastore.KafkaAuth' + brokers: + items: + type: string + type: array + consumer_group_id: + type: string + topic_name: + type: string type: object - models.TestFilterRequest: + datastore.M: + additionalProperties: true + type: object + datastore.MetaEventAttempt: properties: - payload: - description: Sample payload to test against the filter (required) - required: - - payload + request_http_header: + $ref: '#/components/schemas/datastore.HttpHeader' + response_data: + type: string + response_http_header: + $ref: '#/components/schemas/datastore.HttpHeader' type: object - models.TestFilterResponse: + datastore.Metadata: properties: - is_match: - description: Whether the payload matches the filter criteria - type: boolean + data: + description: Data to be sent to endpoint. + items: + type: integer + type: array + 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 + an application + type: integer + raw: + type: string + retry_limit: + type: integer + strategy: + $ref: '#/components/schemas/datastore.StrategyProvider' type: object - models.TestOAuth2Request: + datastore.MtlsClientCert: properties: - oauth2: - $ref: '#/components/schemas/models.OAuth2' + 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.TestOAuth2Response: + datastore.OAuth2: properties: - access_token: + audience: type: string - error: + authentication_type: + $ref: '#/components/schemas/datastore.OAuth2AuthenticationType' + client_id: type: string - expires_at: + client_secret: + description: Encrypted at rest type: string - message: + 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 + grant_type: type: string - success: - type: boolean - token_type: + issuer: + type: string + scope: + type: string + signing_algorithm: + type: string + signing_key: + allOf: + - $ref: '#/components/schemas/datastore.OAuth2SigningKey' + description: Encrypted at rest + subject: + type: string + url: type: string type: object - models.UpdateCustomResponse: + 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: - body: + access_token: + description: >- + Field name for access token (e.g., "accessToken", "access_token", "token") type: string - content_type: + 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.UpdateEndpoint: + datastore.OAuth2SigningKey: properties: - advanced_signatures: - description: |- - Convoy supports two [signature formats](https://getconvoy.io/docs/product-manual/signatures) - -- 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 - shouldn't be needed often because webhook endpoints usually should be exposed to - the internet. - content_type: - description: Content type for the endpoint. Defaults to application/json - if not specified. + crv: + description: EC (Elliptic Curve) key fields type: string - description: - description: |- - Human-readable description of the endpoint. Think of this as metadata describing - the endpoint + d: + description: Private key (EC only) 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: + dp: + description: RSA first factor CRT exponent (RSA private key only) type: string - owner_id: - description: |- - The OwnerID is used to group more than one endpoint together to achieve - [fanout](https://getconvoy.io/docs/manual/endpoints#Endpoint%20Owner%20ID) + dq: + description: RSA second factor CRT exponent (RSA private key only) type: string - rate_limit: - description: |- - Rate limit is the total number of requests to be sent to an endpoint in - the 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. + e: + description: RSA public exponent (RSA only) type: string - slack_webhook_url: - description: |- - Slack webhook URL is an alternative method to support email where endpoint developers - can receive failure notifications on a slack channel. + kid: + description: Key ID type: string - support_email: - description: |- - Endpoint developers support email. This is used for communicating endpoint state - changes. You should always turn this on when disabling endpoints are enabled. + kty: + description: 'Key type: "EC" or "RSA"' type: string - url: - description: |- - URL is the endpoint's URL prefixed with https. non-https urls are currently - not supported. + '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.UpdateEventType: + datastore.PageDirection: + enum: + - next + - prev + type: string + x-enum-varnames: + - Next + - Prev + datastore.PaginationData: properties: - category: - description: Category is a product-specific grouping for the event type + has_next_page: + type: boolean + has_prev_page: + type: boolean + next_page_cursor: type: string - description: - description: Description is used to describe what the event type does + per_page: + type: integer + prev_page_cursor: type: string - json_schema: - additionalProperties: true - description: JSONSchema is the JSON structure of the event type - type: object type: object - models.UpdateFilterRequest: + datastore.PortalAuthType: + enum: + - refresh_token + - static_token + type: string + x-enum-varnames: + - PortalAuthTypeRefreshToken + - PortalAuthTypeStaticToken + datastore.PortalLinkResponse: properties: - body: - allOf: - - $ref: '#/components/schemas/datastore.M' - description: Body matching criteria (optional) - event_type: - description: Type of event this filter applies to (optional) + auth_key: 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) + auth_type: + $ref: '#/components/schemas/datastore.PortalAuthType' + can_manage_endpoint: type: boolean - type: object - models.UpdateSource: - properties: - body_function: - description: |- - Function is a javascript function used to mutate the payload - immediately after ingesting an event + created_at: type: string - custom_response: - allOf: - - $ref: '#/components/schemas/models.UpdateCustomResponse' - description: |- - Custom response is used to define a custom response for incoming - webhooks project sources only. - forward_headers: - description: Soecfy header you want convoy to save from the ingest request - and forward to your endpoints when the event is dispatched. + deleted_at: + type: string + endpoint_count: + type: integer + endpoints: items: type: string type: array - header_function: - description: |- - Function is a javascript function used to mutate the headers - immediately after ingesting an event - type: string - idempotency_keys: - description: |- - IdempotencyKeys are used to specify parts of a webhook request to uniquely - identify the event in an incoming webhooks project. + endpoints_metadata: items: - type: string + $ref: '#/components/schemas/datastore.Endpoint' 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 - webhooks 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 - webhooks projects. If set, type is required and match the verifier - type 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 + owner_id: type: string - delivery_mode: - allOf: - - $ref: '#/components/schemas/datastore.DeliveryMode' - description: Delivery mode configuration - endpoint_id: - description: Destination endpoint ID + project_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 - to specify a `transform` function for this purpose. See this[https://docs.getconvoy.io/product-manual/subscriptions#functions] for more + token: + type: string + uid: type: string - name: - description: Subscription Nme + updated_at: 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 + url: type: string type: object - models.VerifierConfig: + datastore.ProviderConfig: properties: - api_key: - $ref: '#/components/schemas/models.ApiKey' - basic_auth: - $ref: '#/components/schemas/models.BasicAuth' - hmac: - $ref: '#/components/schemas/models.HMac' + twitter: + $ref: '#/components/schemas/datastore.TwitterProviderConfig' + type: object + datastore.PubSubConfig: + properties: + amqp: + $ref: '#/components/schemas/datastore.AmqpPubSubConfig' + google: + $ref: '#/components/schemas/datastore.GooglePubSubConfig' + kafka: + $ref: '#/components/schemas/datastore.KafkaPubSubConfig' + sqs: + $ref: '#/components/schemas/datastore.SQSPubSubConfig' type: - $ref: '#/components/schemas/datastore.VerifierType' - required: - - type + $ref: '#/components/schemas/datastore.PubSubType' + workers: + type: integer type: object - util.ServerResponse: + datastore.PubSubType: + enum: + - sqs + - google + - kafka + - amqp + type: string + x-enum-varnames: + - SqsPubSub + - GooglePubSub + - KafkaPubSub + - AmqpPubSub + datastore.RateLimitConfiguration: properties: - message: - type: string - status: - type: boolean + count: + type: integer + duration: + type: integer type: object - securitySchemes: - ApiKeyAuth: - in: header - name: Authorization - type: apiKey -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: 24.1.4 -openapi: 3.0.3 -paths: - /v1/projects/{projectID}/endpoints: - get: - description: This endpoint fetches an endpoints - operationId: GetEndpoints - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + datastore.RetryConfiguration: + properties: + duration: + type: integer + retry_count: + type: integer + type: + $ref: '#/components/schemas/datastore.StrategyProvider' + type: object + datastore.SQSPubSubConfig: + properties: + access_key_id: type: string - - in: query - name: direction - schema: - enum: - - next - - prev + default_region: type: string - x-enum-varnames: - - Next - - Prev - - description: A pagination cursor to fetch the next page of a list - in: query - name: next_page_cursor - schema: + endpoint: + description: 'Optional: for LocalStack testing' type: string - - description: The owner ID of the endpoint - in: query - name: ownerId - schema: + queue_name: type: string - - description: The number of items to return per page - in: query - name: perPage - schema: - type: integer - - description: A pagination cursor to fetch the previous page of a list - in: query - name: prev_page_cursor - schema: + secret_key: type: string - - description: The name of the endpoint - in: query - name: q - schema: + type: object + datastore.Secret: + properties: + created_at: type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - in: query - name: sort - schema: + deleted_at: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: List all endpoints - tags: - - Endpoints - post: - description: This endpoint creates an endpoint - operationId: CreateEndpoint - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + expires_at: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.CreateEndpoint' - description: Endpoint Details - required: true - x-originalParamName: endpoint - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Create an endpoint - tags: - - Endpoints - /v1/projects/{projectID}/endpoints/{endpointID}: - delete: - description: This endpoint deletes an endpoint - operationId: DeleteEndpoint - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + uid: type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - schema: + updated_at: type: string - responses: - "200": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: OK - "400": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Delete endpoint - tags: - - Endpoints - get: - description: This endpoint fetches an endpoint - operationId: GetEndpoint - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + value: type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - schema: + type: object + datastore.Source: + properties: + body_function: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Retrieve endpoint - tags: - - Endpoints - put: - description: This endpoint updates an endpoint - operationId: UpdateEndpoint - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + created_at: + type: string + custom_response: + $ref: '#/components/schemas/datastore.CustomResponse' + deleted_at: + type: string + forward_headers: + items: + type: string + type: array + header_function: + type: string + idempotency_keys: + items: + type: string + type: array + is_disabled: + type: boolean + mask_id: type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - schema: + name: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.UpdateEndpoint' - description: Endpoint Details - required: true - x-originalParamName: endpoint - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Update an endpoint - tags: - - Endpoints - /v1/projects/{projectID}/endpoints/{endpointID}/activate: - post: - description: Activated an inactive endpoint - operationId: ActivateEndpoint - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + project_id: type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - schema: + provider: + $ref: '#/components/schemas/datastore.SourceProvider' + provider_config: + $ref: '#/components/schemas/datastore.ProviderConfig' + pub_sub: + $ref: '#/components/schemas/datastore.PubSubConfig' + type: + $ref: '#/components/schemas/datastore.SourceType' + uid: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Activate endpoint - tags: - - Endpoints - /v1/projects/{projectID}/endpoints/{endpointID}/expire_secret: - put: - description: This endpoint expires and re-generates the endpoint secret. - operationId: ExpireSecret - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + updated_at: type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - schema: + url: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.ExpireSecret' - description: Expire Secret Body Parameters - required: true - x-originalParamName: endpoint - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Roll endpoint secret - tags: - - Endpoints - /v1/projects/{projectID}/endpoints/{endpointID}/pause: - put: - description: Toggles an endpoint's status between active and paused states - operationId: PauseEndpoint - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + verifier: + $ref: '#/components/schemas/datastore.VerifierConfig' + 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.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: type: string - - description: Endpoint ID - in: path - name: endpointID - required: true - schema: + type: object + datastore.UpdatePortalLinkRequest: + properties: + auth_type: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Pause endpoint - tags: - - Endpoints - /v1/projects/{projectID}/endpoints/oauth2/test: - post: - description: This endpoint tests the OAuth2 connection by attempting to exchange - a token - operationId: TestOAuth2Connection - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + can_manage_endpoint: + description: >- + Specify whether endpoint management can be done through the Portal Link UI + type: boolean + endpoints: + description: |- + Deprecated + IDs of endpoints in this portal link + items: + type: string + type: array + name: + description: Portal Link Name type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.TestOAuth2Request' - description: OAuth2 Configuration - required: true - x-originalParamName: oauth2 - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Test OAuth2 connection - tags: - - Endpoints - /v1/projects/{projectID}/event-types: - get: - description: This endpoint fetches the project's event types - operationId: GetEventTypes - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + 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: + $ref: '#/components/schemas/datastore.ApiKey' + basic_auth: + $ref: '#/components/schemas/datastore.BasicAuth' + hmac: + $ref: '#/components/schemas/datastore.HMac' + 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: + type: object + httpheader.HTTPHeader: + additionalProperties: + items: + type: string + type: array + type: object + models.AlertConfiguration: + properties: + count: + description: Count + type: integer + threshold: + description: Threshold 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Retrieves a project's event types - tags: - - EventTypes - post: - description: This endpoint creates an event type - operationId: CreateEventType - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + type: object + models.AmqpAuth: + properties: + password: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.CreateEventType' - description: Event Type Details - required: true - x-originalParamName: eventType - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Create an event type - tags: - - EventTypes - /v1/projects/{projectID}/event-types/{eventTypeId}: - put: - description: This endpoint updates an event type - operationId: UpdateEventType - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + user: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.UpdateEventType' - description: Event Type Details - required: true - x-originalParamName: eventType - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Updates an event type - tags: - - EventTypes - /v1/projects/{projectID}/event-types/{eventTypeId}/deprecate: - post: - description: This endpoint deprecates an event type - operationId: DeprecateEventType - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + type: object + models.AmqpExchange: + properties: + exchange: type: string - - description: Event Type ID - in: path - name: eventTypeId - required: true - schema: + routingKey: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Deprecates an event type - tags: - - EventTypes - /v1/projects/{projectID}/event-types/import: - post: - description: This endpoint imports event types from an OpenAPI specification - operationId: ImportOpenApiSpec - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + 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 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.ImportOpenAPISpec' - description: OpenAPI specification - required: true - x-originalParamName: spec - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Import event types from OpenAPI spec - tags: - - EventTypes - /v1/projects/{projectID}/eventdeliveries: - get: - description: This endpoint retrieves all event deliveries paginated. - operationId: GetEventDeliveriesPaged - parameters: - - description: Project ID - in: path - name: projectID - required: true schema: type: string - - in: query - name: direction - schema: - enum: - - next - - prev + 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 + type: object + data: + description: |- + Data is an arbitrary JSON value that gets sent as the body of the + webhook to the endpoints + 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 + type: object + event_type: + type: string + headers: + additionalProperties: true + type: object + uid: type: string - x-enum-varnames: - - Next - - Prev - - description: The end date - in: query - name: endDate - schema: + required: + - uid + type: object + models.CreateEndpoint: + properties: + advanced_signatures: + description: >- + Convoy supports two [signature formats](https://getconvoy.io/docs/product-manual/signatures) + + -- simple or advanced. If left unspecified, we default to false. + type: boolean + appID: + description: Deprecated but necessary for backward compatibility type: string - - description: A list of endpoint IDs to filter by - in: query - name: endpointId - schema: - items: - type: string - type: array - - description: Event ID to filter by - in: query - name: eventId - schema: + authentication: + allOf: + - $ref: '#/components/schemas/models.EndpointAuthentication' + description: >- + This is used to define any custom authentication required by the endpoint. This + + shouldn't be needed often because webhook endpoints usually should be exposed to + + the internet. + content_type: + description: >- + Content type for the endpoint. Defaults to application/json if not specified. type: string - - description: EventType to filter by - in: query - name: event_type - schema: + description: + description: >- + Human-readable description of the endpoint. Think of this as metadata describing + + the endpoint type: string - - description: IdempotencyKey to filter by - in: query - name: idempotencyKey - schema: + 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 - - description: A pagination cursor to fetch the next page of a list - in: query - name: next_page_cursor - schema: + owner_id: + description: >- + The OwnerID is used to group more than one endpoint together to achieve + + [fanout](https://getconvoy.io/docs/manual/endpoints#Endpoint%20Owner%20ID) type: string - - description: The number of items to return per page - in: query - name: perPage - schema: + rate_limit: + description: >- + Rate limit is the total number of requests to be sent to an endpoint in + + the time duration specified in RateLimitDuration type: integer - - description: A pagination cursor to fetch the previous page of a list - in: query - name: prev_page_cursor - schema: + 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 - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - in: query - name: sort - schema: + slack_webhook_url: + description: >- + Slack webhook URL is an alternative method to support email where endpoint developers + + can receive failure notifications on a slack channel. type: string - - description: The start date - in: query - name: startDate - schema: + support_email: + description: >- + Endpoint developers support email. This is used for communicating endpoint state + + changes. You should always turn this on when disabling endpoints are enabled. type: string - - description: A list of event delivery statuses to filter by - in: query - name: status - schema: - items: + url: + description: >- + URL is the endpoint's URL prefixed with https. non-https urls are currently + + not supported. + type: string + type: object + models.CreateEvent: + properties: + app_id: + description: Deprecated but necessary for backward compatibility. + type: string + custom_headers: + additionalProperties: type: string - type: array - - description: SubscriptionID to filter by - in: query - name: subscriptionId - schema: + description: >- + Specifies custom headers you want convoy to add when the event is dispatched to your endpoint + type: object + data: + description: |- + Data is an arbitrary JSON value that gets sent as the body of the + webhook to the endpoints + type: object + endpoint_id: + description: Specifies the endpoint to send this event to. 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: List all event deliveries - tags: - - Event Deliveries - /v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}: - get: - description: This endpoint fetches an event delivery. - operationId: GetEventDelivery - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + event_type: + description: Event Type is used for filtering and debugging e.g invoice.paid type: string - - description: event delivery id - in: path - name: eventDeliveryID - required: true - schema: + idempotency_key: + description: Specify a key for event deduplication 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Retrieve an event delivery - tags: - - Event Deliveries - /v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts: - get: - description: This endpoint fetches an app message's delivery attempts - operationId: GetDeliveryAttempts - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + type: object + models.CreateEventType: + properties: + category: + description: Category is a product-specific grouping for the event type type: string - - description: event delivery id - in: path - name: eventDeliveryID - required: true - schema: + description: + description: Description is used to describe what the event type does 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: List delivery attempts - tags: - - Delivery Attempts - /v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/deliveryattempts/{deliveryAttemptID}: - get: - description: This endpoint fetches an app event delivery attempt - operationId: GetDeliveryAttempt - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + json_schema: + additionalProperties: true + description: JSONSchema is the JSON structure of the event type + 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) + 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) + required: + - event_type + type: object + models.CreateSource: + properties: + body_function: + description: |- + Function is a javascript function used to mutate the payload + immediately 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 + webhooks project sources only. + header_function: + description: |- + Function is a javascript function used to mutate the headers + immediately after ingesting an event + type: string + idempotency_keys: + description: >- + IdempotencyKeys are used to specify parts of a webhook request to uniquely + + identify 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 + webhooks 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 + webhooks projects. If set, type is required and match the verifier + type 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 - - description: event delivery id - in: path - name: eventDeliveryID - required: true - schema: + delivery_mode: + allOf: + - $ref: '#/components/schemas/datastore.DeliveryMode' + description: Delivery mode configuration + endpoint_id: + description: Destination endpoint ID type: string - - description: delivery attempt id - in: path - name: deliveryAttemptID - required: true - schema: + 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 + + to specify a `transform` function for this purpose. See this[https://docs.getconvoy.io/product-manual/subscriptions#functions] for more 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Retrieve a delivery attempt - tags: - - Delivery Attempts - /v1/projects/{projectID}/eventdeliveries/{eventDeliveryID}/resend: - put: - description: This endpoint retries an event delivery. - operationId: ResendEventDelivery - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + name: + description: Subscription Nme type: string - - description: event delivery id - in: path - name: eventDeliveryID - required: true - schema: + rate_limit_config: + allOf: + - $ref: '#/components/schemas/models.RateLimitConfiguration' + description: Rate limit configuration + source_id: + description: Source Id 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Retry event delivery - tags: - - Event Deliveries - /v1/projects/{projectID}/eventdeliveries/batchretry: - post: - description: This endpoint batch retries multiple event deliveries at once. - operationId: BatchRetryEventDelivery - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + type: object + models.CustomResponse: + properties: + body: type: string - - in: query - name: direction - schema: - enum: - - next - - prev + content_type: type: string - x-enum-varnames: - - Next - - Prev - - description: The end date - in: query - name: endDate - schema: + 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 + type: object + data: + description: |- + Data is an arbitrary JSON value that gets sent as the body of the + webhook to the endpoints + type: object + event_type: + description: Event Type is used for filtering and debugging e.g invoice.paid type: string - - description: A list of endpoint IDs to filter by - in: query - name: endpointId - schema: + event_types: + description: A list of event types for the subscription filter config items: type: string type: array - - description: Event ID to filter by - in: query - name: eventId - schema: + idempotency_key: + description: Specify a key for event deduplication type: string - - description: EventType to filter by - in: query - name: event_type - schema: + secret: + description: >- + Endpoint's webhook secret. If not provided, Convoy autogenerates one for the endpoint. type: string - - description: IdempotencyKey to filter by - in: query - name: idempotencyKey - schema: + url: + description: >- + URL is the endpoint's URL prefixed with https. non-https urls are currently + + not supported. type: string - - description: A pagination cursor to fetch the next page of a list - in: query - name: next_page_cursor - schema: + 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: + $ref: '#/components/schemas/datastore.EndpointAuthentication' + content_type: type: string - - description: The number of items to return per page - in: query - name: perPage - schema: + created_at: + type: string + deleted_at: + type: string + description: + type: string + events: type: integer - - description: A pagination cursor to fetch the previous page of a list - in: query - name: prev_page_cursor - schema: + failure_rate: + type: number + http_timeout: + type: integer + mtls_client_cert: + allOf: + - $ref: '#/components/schemas/datastore.MtlsClientCert' + description: mTLS client certificate configuration + name: type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - in: query - name: sort - schema: + owner_id: type: string - - description: The start date - in: query - name: startDate - schema: + project_id: type: string - - description: A list of event delivery statuses to filter by - in: query - name: status - schema: + rate_limit: + type: integer + rate_limit_duration: + type: integer + secrets: items: - type: string + $ref: '#/components/schemas/datastore.Secret' type: array - - description: SubscriptionID to filter by - in: query - name: subscriptionId - schema: + slack_webhook_url: type: string - responses: - "200": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: OK - "400": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Batch retry event delivery - tags: - - Event Deliveries - /v1/projects/{projectID}/eventdeliveries/forceresend: - post: - description: This endpoint enables you retry a previously successful event delivery - operationId: ForceResendEventDeliveries - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + status: + $ref: '#/components/schemas/datastore.EndpointStatus' + support_email: + type: string + uid: + type: string + updated_at: + type: string + url: + type: string + type: object + models.EventDeliveryResponse: + properties: + acknowledged_at: + type: string + cli_metadata: + $ref: '#/components/schemas/datastore.CLIMetadata' + created_at: + type: string + deleted_at: + type: string + delivery_mode: + $ref: '#/components/schemas/datastore.DeliveryMode' + description: + type: string + device_id: + type: string + device_metadata: + $ref: '#/components/schemas/datastore.Device' + endpoint_id: + type: string + endpoint_metadata: + $ref: '#/components/schemas/datastore.Endpoint' + event_id: + type: string + event_metadata: + $ref: '#/components/schemas/datastore.Event' + event_type: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.IDs' - description: event delivery ids - required: true - x-originalParamName: deliveryIds - responses: - "200": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: OK - "400": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Force retry event delivery - tags: - - Event Deliveries - /v1/projects/{projectID}/events: - get: - description: This endpoint fetches app events with pagination - operationId: GetEventsPaged - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + headers: + $ref: '#/components/schemas/httpheader.HTTPHeader' + idempotency_key: type: string - - in: query - name: direction - schema: - enum: - - next - - prev + latency: + description: 'Deprecated: Latency is deprecated.' type: string - x-enum-varnames: - - Next - - Prev - - description: The end date - in: query - name: endDate - schema: + latency_seconds: + type: number + metadata: + $ref: '#/components/schemas/datastore.Metadata' + project_id: type: string - - description: A list of endpoint ids to filter by - in: query - name: endpointId - schema: - items: - type: string - type: array - - description: IdempotencyKey to filter by - in: query - name: idempotencyKey - schema: + source_metadata: + $ref: '#/components/schemas/datastore.Source' + status: + $ref: '#/components/schemas/datastore.EventDeliveryStatus' + subscription_id: type: string - - description: A pagination cursor to fetch the next page of a list - in: query - name: next_page_cursor - schema: + uid: type: string - - description: The number of items to return per page - in: query - name: perPage - schema: - type: integer - - description: A pagination cursor to fetch the previous page of a list - in: query - name: prev_page_cursor - schema: + updated_at: type: string - - description: Any arbitrary value to filter the events payload - in: query - name: query - schema: + url_query_params: type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - in: query - name: sort - schema: + type: object + models.EventResponse: + properties: + acknowledged_at: type: string - - description: A list of Source IDs to filter the events by. - in: query - name: sourceId - schema: + app_id: + description: Deprecated + type: string + created_at: + type: string + data: + description: |- + Data is an arbitrary JSON value that gets sent as the body of the + webhook to the endpoints + items: + type: integer + type: array + deleted_at: + type: string + endpoint_metadata: + items: + $ref: '#/components/schemas/datastore.Endpoint' + type: array + endpoints: items: type: string type: array - - description: The start date - in: query - name: startDate - schema: + event_type: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: List all events - tags: - - Events - post: - description: This endpoint creates an endpoint event - operationId: CreateEndpointEvent - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + headers: + $ref: '#/components/schemas/httpheader.HTTPHeader' + idempotency_key: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.CreateEvent' - description: Event Details - required: true - x-originalParamName: event - responses: - "201": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Created - "400": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Create an event - tags: - - Events - /v1/projects/{projectID}/events/{eventID}: - get: - description: This endpoint retrieves an event - operationId: GetEndpointEvent - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + is_duplicate_event: + type: boolean + metadata: type: string - - description: event id - in: path - name: eventID - required: true - schema: + project_id: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Retrieve an event - tags: - - Events - /v1/projects/{projectID}/events/{eventID}/replay: - put: - description: This endpoint replays an event afresh assuming it is a new event. - operationId: ReplayEndpointEvent - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + raw: type: string - - description: event id - in: path - name: eventID - required: true - schema: + source_id: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Replay event - tags: - - Events - /v1/projects/{projectID}/events/batchreplay: - post: - description: This endpoint replays multiple events at once. - operationId: BatchReplayEvents - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + source_metadata: + $ref: '#/components/schemas/datastore.Source' + status: + $ref: '#/components/schemas/datastore.EventStatus' + uid: + type: string + updated_at: + type: string + url_query_params: + type: string + type: object + models.EventTypeResponse: + properties: + category: + type: string + deprecated_at: + type: string + description: type: string - - in: query - name: direction - schema: - enum: - - next - - prev + json_schema: + items: + type: integer + type: array + name: type: string - x-enum-varnames: - - Next - - Prev - - description: The end date - in: query - name: endDate - schema: + uid: type: string - - description: A list of endpoint ids to filter by - in: query - name: endpointId - schema: + type: object + models.ExpireSecret: + properties: + expiration: + description: >- + Amount of time to wait before expiring the old endpoint secret. + + If AdvancedSignatures is turned on for the project, signatures for both secrets will be generated up until + + the 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' + 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 + type: object + data: + description: |- + Data is an arbitrary JSON value that gets sent as the body of the + webhook to the endpoints + 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 - - description: IdempotencyKey to filter by - in: query - name: idempotencyKey - schema: + filter: + allOf: + - $ref: '#/components/schemas/models.FS' + description: Body & Header filters + type: object + models.FilterResponse: + properties: + body: + $ref: '#/components/schemas/datastore.M' + event_type: type: string - - description: A pagination cursor to fetch the next page of a list - in: query - name: next_page_cursor - schema: + headers: + $ref: '#/components/schemas/datastore.M' + raw_body: + $ref: '#/components/schemas/datastore.M' + raw_headers: + $ref: '#/components/schemas/datastore.M' + subscription_id: type: string - - description: The number of items to return per page - in: query - name: perPage - schema: - type: integer - - description: A pagination cursor to fetch the previous page of a list - in: query - name: prev_page_cursor - schema: + uid: type: string - - description: Any arbitrary value to filter the events payload - in: query - name: query - schema: + type: object + models.FilterSchema: + properties: + body: {} + header: {} + type: object + models.FunctionRequest: + properties: + function: type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - in: query - name: sort - schema: + payload: + additionalProperties: {} + type: object + type: type: string - - description: A list of Source IDs to filter the events by. - in: query - name: sourceId - schema: + type: object + models.FunctionResponse: + properties: + log: items: type: string type: array - - description: The start date - in: query - name: startDate - schema: + payload: {} + type: object + models.GooglePubSubConfig: + properties: + project_id: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Batch replay events - tags: - - Events - /v1/projects/{projectID}/events/broadcast: - post: - description: This endpoint creates a event that is broadcast to every endpoint - whose subscription matches the given event type. - operationId: CreateBroadcastEvent - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + service_account: + items: + type: integer + type: array + subscription_id: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.BroadcastEvent' - description: Broadcast Event Details - required: true - x-originalParamName: event - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Create a broadcast event - tags: - - Events - /v1/projects/{projectID}/events/dynamic: - post: - 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 - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + type: object + models.HMac: + properties: + encoding: + $ref: '#/components/schemas/datastore.EncodingType' + hash: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.DynamicEvent' - description: Event Details - required: true - x-originalParamName: event - responses: - "201": - content: - application/json: - schema: - $ref: '#/components/schemas/handlers.Stub' - description: Created - "400": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Dynamic Events - tags: - - Events - /v1/projects/{projectID}/events/fanout: - post: - description: This endpoint uses the owner_id to fan out an event to multiple - endpoints. - operationId: CreateEndpointFanoutEvent - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + header: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.FanoutEvent' - description: Event Details - required: true - x-originalParamName: event - responses: - "201": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Created - "400": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Fan out an event - tags: - - Events - /v1/projects/{projectID}/meta-events: - get: - description: This endpoint fetches meta events with pagination - operationId: GetMetaEventsPaged - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + 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 - - in: query - name: direction - schema: - enum: - - next - - prev + type: object + models.KafkaAuth: + properties: + hash: type: string - x-enum-varnames: - - Next - - Prev - - description: The end date - in: query - name: endDate - schema: + password: type: string - - description: A pagination cursor to fetch the next page of a list - in: query - name: next_page_cursor - schema: + tls: + type: boolean + type: type: string - - description: The number of items to return per page - in: query - name: perPage - schema: - type: integer - - description: A pagination cursor to fetch the previous page of a list - in: query - name: prev_page_cursor - schema: + username: type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - in: query - name: sort - schema: + type: object + models.KafkaPubSubConfig: + properties: + auth: + $ref: '#/components/schemas/models.KafkaAuth' + brokers: + items: + type: string + type: array + consumer_group_id: type: string - - description: The start date - in: query - name: startDate - schema: + topic_name: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: List all meta events - tags: - - Meta Events - /v1/projects/{projectID}/meta-events/{metaEventID}: - get: - description: This endpoint retrieves a meta event - operationId: GetMetaEvent - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + type: object + models.MetaEventResponse: + properties: + attempt: + $ref: '#/components/schemas/datastore.MetaEventAttempt' + created_at: type: string - - description: meta event id - in: path - name: metaEventID - required: true - schema: + deleted_at: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Retrieve a meta event - tags: - - Meta Events - /v1/projects/{projectID}/meta-events/{metaEventID}/resend: - put: - description: This endpoint retries a meta event - operationId: ResendMetaEvent - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + event_type: type: string - - description: meta event id - in: path - name: metaEventID - required: true - schema: + metadata: + $ref: '#/components/schemas/datastore.Metadata' + project_id: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Retry meta event - tags: - - Meta Events - /v1/projects/{projectID}/portal-links: - get: - description: This endpoint fetches multiple portal links - operationId: LoadPortalLinksPaged - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + status: + $ref: '#/components/schemas/datastore.EventDeliveryStatus' + uid: type: string - - in: query - name: direction - schema: - enum: - - next - - prev + updated_at: type: string - x-enum-varnames: - - Next - - Prev - - description: A pagination cursor to fetch the next page of a list - in: query - name: next_page_cursor - schema: + type: object + models.MtlsClientCert: + properties: + client_cert: + description: ClientCert is the client certificate PEM string type: string - - description: The owner ID of the endpoint - in: query - name: ownerId - schema: + client_key: + description: ClientKey is the client private key PEM string type: string - - description: The number of items to return per page - in: query - name: perPage - schema: - type: integer - - description: A pagination cursor to fetch the previous page of a list - in: query - name: prev_page_cursor - schema: + type: object + models.OAuth2: + properties: + audience: type: string - - description: The name of the endpoint - in: query - name: q - schema: + authentication_type: type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - in: query - name: sort - schema: + client_id: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: List all portal links - tags: - - Portal Links - post: - description: This endpoint creates a portal link - operationId: CreatePortalLink - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + client_secret: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/datastore.CreatePortalLinkRequest' - description: Portal Link Details - required: true - x-originalParamName: portallink - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Create a portal link - tags: - - Portal Links - /v1/projects/{projectID}/portal-links/{portalLinkID}: - get: - description: This endpoint retrieves a portal link by its id. - operationId: GetPortalLink - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + 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 - - description: portal link id - in: path - name: portalLinkID - required: true - schema: + url: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Retrieve a portal link - tags: - - Portal Links - put: - description: This endpoint updates a portal link - operationId: UpdatePortalLink - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + type: object + models.OAuth2FieldMapping: + properties: + access_token: + description: >- + Field name for access token (e.g., "accessToken", "access_token", "token") type: string - - description: portal link id - in: path - name: portalLinkID - required: true - schema: + expires_in: + description: >- + Field name for expiry time (e.g., "expiresIn", "expires_in", "expiresAt") type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/datastore.UpdatePortalLinkRequest' - description: Portal Link Details - required: true - x-originalParamName: portallink - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Update a portal link - tags: - - Portal Links - /v1/projects/{projectID}/portal-links/{portalLinkID}/refresh_token: - get: - description: This endpoint retrieves a portal link auth token - operationId: RefreshPortalLinkAuthToken - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + token_type: + description: 'Field name for token type (e.g., "tokenType", "token_type")' type: string - - description: portal link id - in: path - name: portalLinkID - required: true - schema: + type: object + models.OAuth2SigningKey: + properties: + crv: + description: EC (Elliptic Curve) key fields 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Get a portal link auth token - tags: - - Portal Links - /v1/projects/{projectID}/portal-links/{portalLinkID}/revoke: - put: - description: This endpoint revokes a portal link - operationId: RevokePortalLink - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + d: + description: Private key (EC) or private exponent (RSA) type: string - - description: portal link id - in: path - name: portalLinkID - required: true - schema: + dp: + description: RSA first factor CRT exponent (RSA private key only) type: string - responses: - "200": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: OK - "400": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Revoke a portal link - tags: - - Portal Links - /v1/projects/{projectID}/sources: - get: - description: This endpoint fetches multiple sources - operationId: LoadSourcesPaged - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + dq: + description: RSA second factor CRT exponent (RSA private key only) type: string - - in: query - name: direction - schema: - enum: - - next - - prev + e: + description: RSA public exponent (RSA only) type: string - x-enum-varnames: - - Next - - Prev - - description: A pagination cursor to fetch the next page of a list - in: query - name: next_page_cursor - schema: + kid: + description: Key ID type: string - - description: The number of items to return per page - in: query - name: perPage - schema: - type: integer - - description: A pagination cursor to fetch the previous page of a list - in: query - name: prev_page_cursor - schema: + kty: + description: 'Key type: "EC" or "RSA"' type: string - - description: The custom source provider e.g. twitter, shopify - in: query - name: provider - schema: + 'n': + description: RSA key fields type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - in: query - name: sort - schema: + p: + description: RSA first prime factor (RSA private key only) type: string - - description: The source type e.g. http, pub_sub - in: query - name: type - schema: + q: + description: RSA second prime factor (RSA private key only) 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: List all sources - tags: - - Sources - post: - description: This endpoint creates a source - operationId: CreateSource - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + qi: + description: RSA first CRT coefficient (RSA private key only) type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.CreateSource' - description: Source Details - required: true - x-originalParamName: source - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Create a source - tags: - - Sources - /v1/projects/{projectID}/sources/{sourceID}: - delete: - description: This endpoint deletes a source - operationId: DeleteSource - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + 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 - - description: source id - in: path - name: sourceID - required: true - schema: + url: type: string - responses: - "200": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: OK - "400": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Delete a source - tags: - - Sources - get: - description: This endpoint retrieves a source by its id - operationId: GetSource - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + type: object + models.OnboardValidationError: + properties: + field: type: string - - description: Source ID - in: path - name: sourceID - required: true - schema: + message: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Retrieve a source - tags: - - Sources - put: - description: This endpoint updates a source - operationId: UpdateSource - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + row: + type: integer + type: object + models.PagedResponse: + properties: + content: {} + pagination: + allOf: + - $ref: '#/components/schemas/datastore.PaginationData' + nullable: true + 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 - - description: source id - in: path - name: sourceID - required: true - schema: + 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 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.UpdateSource' - description: Source Details - required: true - x-originalParamName: source - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Update a source - tags: - - Sources - /v1/projects/{projectID}/sources/test_function: - post: - description: This endpoint validates that a filter will match a certain payload - structure. - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + default_region: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.FunctionRequest' - description: Function Details - required: true - x-originalParamName: filter - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Validate source function - tags: - - Subscriptions - /v1/projects/{projectID}/subscriptions: - get: - description: This endpoint fetches all the subscriptions - operationId: GetSubscriptions - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + queue_name: type: string - - in: query - name: direction - schema: - enum: - - next - - prev + secret_key: type: string - x-enum-varnames: - - Next - - Prev - - description: A list of endpointIDs to filter by - in: query - name: endpointId - schema: + type: object + models.SourceResponse: + properties: + body_function: + type: string + created_at: + type: string + custom_response: + $ref: '#/components/schemas/datastore.CustomResponse' + deleted_at: + type: string + forward_headers: items: type: string type: array - - description: Subscription name to filter by - in: query - name: name - schema: + header_function: type: string - - description: A pagination cursor to fetch the next page of a list - in: query - name: next_page_cursor - schema: + idempotency_keys: + items: + type: string + type: array + is_disabled: + type: boolean + mask_id: type: string - - description: The number of items to return per page - in: query - name: perPage - schema: - type: integer - - description: A pagination cursor to fetch the previous page of a list - in: query - name: prev_page_cursor - schema: + name: type: string - - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` - in: query - name: sort - schema: + project_id: + type: string + provider: + $ref: '#/components/schemas/datastore.SourceProvider' + provider_config: + $ref: '#/components/schemas/datastore.ProviderConfig' + pub_sub: + $ref: '#/components/schemas/datastore.PubSubConfig' + type: + $ref: '#/components/schemas/datastore.SourceType' + uid: + type: string + updated_at: + type: string + url: + type: string + verifier: + $ref: '#/components/schemas/datastore.VerifierConfig' + type: object + models.SubscriptionResponse: + properties: + alert_config: + allOf: + - $ref: '#/components/schemas/datastore.AlertConfiguration' + description: subscription config + created_at: + type: string + deleted_at: + type: string + delivery_mode: + $ref: '#/components/schemas/datastore.DeliveryMode' + device_metadata: + $ref: '#/components/schemas/datastore.Device' + endpoint_metadata: + $ref: '#/components/schemas/datastore.Endpoint' + filter_config: + $ref: '#/components/schemas/datastore.FilterConfiguration' + function: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: List all subscriptions - tags: - - Subscriptions - post: - description: This endpoint creates a subscriptions - operationId: CreateSubscription - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + name: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.CreateSubscription' - description: Subscription details - required: true - x-originalParamName: subscription - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Create a subscription - tags: - - Subscriptions - /v1/projects/{projectID}/subscriptions/{subscriptionID}: - delete: - description: This endpoint deletes a subscription - operationId: DeleteSubscription - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + project_id: type: string - - description: subscription id - in: path - name: subscriptionID - required: true - schema: + rate_limit_config: + $ref: '#/components/schemas/datastore.RateLimitConfiguration' + retry_config: + $ref: '#/components/schemas/datastore.RetryConfiguration' + source_metadata: + $ref: '#/components/schemas/datastore.Source' + type: + $ref: '#/components/schemas/datastore.SubscriptionType' + uid: type: string - responses: - "200": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: OK - "400": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Delete subscription - tags: - - Subscriptions - get: - description: This endpoint retrieves a single subscription - operationId: GetSubscription - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + updated_at: type: string - - description: subscription id - in: path - name: subscriptionID - required: true + 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 the filter (required) + required: + - payload + 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 - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Retrieve a subscription - tags: - - Subscriptions - put: - description: This endpoint updates a subscription - operationId: UpdateSubscription - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + error: type: string - - description: subscription id - in: path - name: subscriptionID - required: true - schema: + expires_at: type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.UpdateSubscription' - description: Subscription Details - required: true - x-originalParamName: subscription - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Update a subscription - tags: - - Subscriptions - /v1/projects/{projectID}/subscriptions/{subscriptionID}/filters: - get: - description: This endpoint fetches all filters for a subscription - operationId: GetFilters - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + message: type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - schema: + success: + type: boolean + token_type: 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: List all filters - tags: - - Filters - post: - description: This endpoint creates a new filter for a subscription - operationId: CreateFilter - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + type: object + models.UpdateCustomResponse: + properties: + body: + nullable: true type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - schema: + content_type: + nullable: true type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.CreateFilterRequest' - description: Filter to create - required: true - x-originalParamName: filter - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Create a new filter - tags: - - Filters - /v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/{filterID}: - delete: - description: This endpoint deletes a filter - operationId: DeleteFilter - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + type: object + models.UpdateEndpoint: + properties: + advanced_signatures: + description: >- + Convoy supports two [signature formats](https://getconvoy.io/docs/product-manual/signatures) + + -- 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 + + shouldn't be needed often because webhook endpoints usually should be exposed to + + the internet. + content_type: + description: >- + Content type for the endpoint. Defaults to application/json if not specified. type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - schema: + description: + description: >- + Human-readable description of the endpoint. Think of this as metadata describing + + the endpoint type: string - - description: Filter ID - in: path - name: filterID - required: true - schema: + 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 - responses: - "200": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: OK - "400": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Delete a filter - tags: - - Filters - get: - description: This endpoint retrieves a single filter - operationId: GetFilter - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + owner_id: + description: >- + The OwnerID is used to group more than one endpoint together to achieve + + [fanout](https://getconvoy.io/docs/manual/endpoints#Endpoint%20Owner%20ID) type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - schema: + rate_limit: + description: >- + Rate limit is the total number of requests to be sent to an endpoint in + + the 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 - - description: Filter ID - in: path - name: filterID - required: true - schema: + slack_webhook_url: + description: >- + Slack webhook URL is an alternative method to support email where endpoint developers + + can receive failure notifications on a slack channel. 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Get a filter - tags: - - Filters - put: - description: This endpoint updates an existing filter - operationId: UpdateFilter - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + support_email: + description: >- + Endpoint developers support email. This is used for communicating endpoint state + + changes. You should always turn this on when disabling endpoints are enabled. type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - schema: + url: + description: >- + URL is the endpoint's URL prefixed with https. non-https urls are currently + + not supported. type: string - - description: Filter ID - in: path - name: filterID - required: true - schema: + type: object + models.UpdateEventType: + properties: + category: + description: Category is a product-specific grouping for the event type type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.UpdateFilterRequest' - description: Updated filter - required: true - x-originalParamName: filter - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Update a filter - tags: - - Filters - /v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk: - post: - description: This endpoint creates multiple filters for a subscription - operationId: BulkCreateFilters - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + description: + description: Description is used to describe what the event type does type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - schema: + json_schema: + additionalProperties: true + description: JSONSchema is the JSON structure of the event type + type: object + type: object + models.UpdateFilterRequest: + properties: + body: + allOf: + - $ref: '#/components/schemas/datastore.M' + description: Body matching criteria (optional) + event_type: + description: Type of event this filter applies to (optional) type: string - requestBody: - content: - application/json: - schema: - items: - $ref: '#/components/schemas/models.CreateFilterRequest' - type: array - description: Filters to create - required: true - x-originalParamName: filters - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Create multiple subscription filters - tags: - - Filters - /v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/bulk_update: - put: - description: This endpoint updates multiple filters for a subscription - operationId: BulkUpdateFilters - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + 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 + type: object + models.UpdateSource: + properties: + body_function: + description: |- + Function is a javascript function used to mutate the payload + immediately after ingesting an event type: string - - description: Subscription ID - in: path - name: subscriptionID - required: true - schema: + custom_response: + allOf: + - $ref: '#/components/schemas/models.UpdateCustomResponse' + description: |- + Custom response is used to define a custom response for incoming + webhooks project sources only. + 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 + immediately after ingesting an event type: string - requestBody: - content: - application/json: - schema: - items: - $ref: '#/components/schemas/models.BulkUpdateFilterRequest' - type: array - description: Filters to update - required: true - x-originalParamName: filters - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Update multiple subscription filters - tags: - - Filters - /v1/projects/{projectID}/subscriptions/{subscriptionID}/filters/test/{eventType}: - post: - description: This endpoint tests a filter against a payload - operationId: TestFilter - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + idempotency_keys: + description: >- + IdempotencyKeys are used to specify parts of a webhook request to uniquely + + identify 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 - - description: Subscription ID - in: path - name: subscriptionID - required: true - schema: + pub_sub: + allOf: + - $ref: '#/components/schemas/models.PubSubConfig' + description: >- + PubSub are used to specify message broker sources for outgoing + + webhooks 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 + webhooks projects. If set, type is required and match the verifier + type 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 - - description: Event Type - in: path - name: eventType - required: true - schema: + delivery_mode: + allOf: + - $ref: '#/components/schemas/datastore.DeliveryMode' + description: Delivery mode configuration + endpoint_id: + description: Destination endpoint ID type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.TestFilterRequest' - description: Payload to test - required: true - x-originalParamName: payload - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Test a filter - tags: - - Filters - /v1/projects/{projectID}/subscriptions/test_filter: - post: - description: This endpoint validates that a filter will match a certain payload - structure. - operationId: TestSubscriptionFilter - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + 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 + + to specify a `transform` function for this purpose. See this[https://docs.getconvoy.io/product-manual/subscriptions#functions] for more type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.TestFilter' - description: Filter Details - required: true - x-originalParamName: filter - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Validate subscription filter - tags: - - Subscriptions - /v1/projects/{projectID}/subscriptions/test_function: - post: - description: This endpoint test runs a transform function against a payload. - operationId: TestSubscriptionFunction - parameters: - - description: Project ID - in: path - name: projectID - required: true - schema: + name: + description: Subscription Nme type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/models.FunctionRequest' - description: Function Details - required: true - x-originalParamName: filter - 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: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Bad Request - "401": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Unauthorized - "404": - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/util.ServerResponse' - - properties: - data: - $ref: '#/components/schemas/handlers.Stub' - type: object - description: Not Found - security: - - ApiKeyAuth: [] - summary: Test a subscription function - tags: - - Subscriptions -servers: -- url: https://dashboard.getconvoy.io/api + 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: + in: header + name: Authorization + type: apiKey tags: -- description: Organisation related APIs - name: Organisations -- 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: Project related APIs - name: Projects -- description: Portal Links related APIs - name: Portal Links -- description: Meta Events related APIs - name: Meta Events + - 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 From 782680b596c714783f43b56bed557d1a15e1ef30 Mon Sep 17 00:00:00 2001 From: Raymond Tukpe Date: Fri, 17 Apr 2026 11:36:26 +0200 Subject: [PATCH 2/9] Remove unused `v3gen` utility tool --- v3gen/main.go | 131 -------------------------------------------------- 1 file changed, 131 deletions(-) delete mode 100644 v3gen/main.go diff --git a/v3gen/main.go b/v3gen/main.go deleted file mode 100644 index b86eb34142..0000000000 --- a/v3gen/main.go +++ /dev/null @@ -1,131 +0,0 @@ -package main - -import ( - "bytes" - "encoding/json" - "fmt" - "os" - "path/filepath" - - "github.com/getkin/kin-openapi/openapi2" - "github.com/getkin/kin-openapi/openapi2conv" - "github.com/getkin/kin-openapi/openapi3" - "github.com/ghodss/yaml" - "github.com/pkg/errors" - - log "github.com/frain-dev/convoy/pkg/logger" -) - -const ( - v2Fame = "docs/swagger.json" - v3FnameJSON = "docs/v3/openapi3.json" - v3FnameYAML = "docs/v3/openapi3.yaml" -) - -func main() { - var l = log.New("v3gen", log.LevelInfo) - docV2, err := loadV2() - if err != nil { - l.Fatal("loadV2 failed: " + err.Error()) - } - - docV3, err := convertToV3(docV2) - if err != nil { - l.Fatal("convertToV3 failed: " + err.Error()) - } - - err = writeOutDocV3(docV3) - if err != nil { - l.Fatal("writeOutDocV3 failed: " + err.Error()) - } -} - -func loadV2() (*openapi2.T, error) { - f, err := os.Open(v2Fame) - if err != nil { - return nil, errors.Wrap(err, "failed to open "+v2Fame) - } - defer func() { - _ = f.Close() - }() - - docV2 := &openapi2.T{} - err = json.NewDecoder(f).Decode(docV2) - if err != nil { - return nil, errors.Wrap(err, "failed to decode "+v2Fame) - } - - return docV2, nil -} - -func convertToV3(docV2 *openapi2.T) (*openapi3.T, error) { - docV3, err := openapi2conv.ToV3(docV2) - if err != nil { - return nil, errors.Wrap(err, "failed to generate docV3") - } - - return docV3, nil -} - -func writeOutDocV3(docV3 *openapi3.T) error { - buf, err := docV3.MarshalJSON() - if err != nil { - return errors.Wrap(err, "failed to marshal spec3") - } - - indentBuf := &bytes.Buffer{} - err = json.Indent(indentBuf, buf, "", " ") - if err != nil { - return errors.Wrap(err, "failed to indent docV3 json") - } - - jsonFilePath := filepath.Clean(filepath.Join(findProjectRoot(), v3FnameJSON)) - - fJson, err := os.OpenFile(jsonFilePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) - if err != nil { - return errors.Wrap(err, "failed to open "+v3FnameJSON) - } - - _, err = fJson.Write(indentBuf.Bytes()) - if err != nil { - return errors.Wrap(err, "failed to write "+v3FnameJSON) - } - - yamlBuf, err := yaml.JSONToYAML(buf) - if err != nil { - return errors.Wrap(err, "failed to convert json docV3 to yaml") - } - - yamlFilePath := filepath.Clean(filepath.Join(findProjectRoot(), v3FnameYAML)) - fYaml, err := os.OpenFile(yamlFilePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) - if err != nil { - return errors.Wrap(err, "failed to open "+v3FnameJSON) - } - - _, err = fYaml.Write(yamlBuf) - if err != nil { - return errors.Wrap(err, "failed to write "+v3FnameYAML) - } - - fmt.Println("created", v3FnameYAML) - - return nil -} - -func findProjectRoot() (roots string) { - cwd, _ := os.Getwd() - dir := filepath.Clean(cwd) - - // Look for enclosing go.mod. - for { - if fi, err := os.Stat(filepath.Join(dir, "go.mod")); err == nil && !fi.IsDir() { - return dir - } - d := filepath.Dir(dir) - if d == dir { - break - } - dir = d - } - return "" -} From 59a88402b2ba84dc18166e6b0269fc27395a950d Mon Sep 17 00:00:00 2001 From: Raymond Tukpe Date: Fri, 17 Apr 2026 11:36:36 +0200 Subject: [PATCH 3/9] Add new tools and scripts for OpenAPI spec generation and updates --- .mise-tasks/gen/docs.sh | 17 ++++++++++++++++- mise.toml | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/.mise-tasks/gen/docs.sh b/.mise-tasks/gen/docs.sh index 55413ba485..0a08746068 100755 --- a/.mise-tasks/gen/docs.sh +++ b/.mise-tasks/gen/docs.sh @@ -7,6 +7,21 @@ set -e echo "Generating docs" + +#generate custom swag tags +go run docs/annotate_dtos/main.go + +#generate v2 openapi specs swag init --generatedTime --parseDependency --parseDependencyLevel 3 --parseInternal -g handlers/main.go -d api/ api/* swag fmt -d ./api -go run v3gen/main.go + +# fix openapi2 specs (structural fixes, add proper produce/consume tags, replace x-nullable..) +bash docs/fix_openapi_spec.sh + +#generate v3 specs +api-spec-converter --from=swagger_2 --to=openapi_3 -s yaml ./docs/swagger.yaml > ./docs/v3/openapi3.yaml +api-spec-converter --from=swagger_2 --to=openapi_3 ./docs/swagger.json > ./docs/v3/openapi3.json + +# add region descriptions and EU server (swag only supports a single host) +yq -i '.servers[0].description = "US Region" | .servers += [{"url": "https://eu.getconvoy.cloud/api", "description": "EU Region"}]' ./docs/v3/openapi3.yaml +jq '.servers[0].description = "US Region" | .servers += [{"url": "https://eu.getconvoy.cloud/api", "description": "EU Region"}]' ./docs/v3/openapi3.json > ./docs/v3/openapi3.json.tmp && mv ./docs/v3/openapi3.json.tmp ./docs/v3/openapi3.json diff --git a/mise.toml b/mise.toml index a176c58ed5..cd6b25a08f 100644 --- a/mise.toml +++ b/mise.toml @@ -15,6 +15,8 @@ nodejs = "24.10.0" "npm:squawk-cli" = { version = "latest", bin = "squawk" } "go:github.com/ogen-go/ogen/cmd/ogen" = "v1.16.0" "go:github.com/swaggo/swag/cmd/swag" = "latest" +"npm:api-spec-converter" = "latest" +yq = "latest" "go:go.uber.org/mock/mockgen" = "latest" "go:github.com/sqlc-dev/sqlc/cmd/sqlc" = "1.30.0" "go:github.com/daixiang0/gci" = "latest" From 614b3e1f0508eb02402ce640bc4460ebddb7cbed Mon Sep 17 00:00:00 2001 From: Raymond Tukpe Date: Fri, 17 Apr 2026 11:36:42 +0200 Subject: [PATCH 4/9] Add `x-nullable` extensions to API response models and update API specs --- api/handlers/main.go | 17 ++++++++++------- api/models/models.go | 8 ++++---- api/models/project.go | 4 ++-- api/models/source.go | 4 ++-- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/api/handlers/main.go b/api/handlers/main.go index 25465484da..46287132e0 100644 --- a/api/handlers/main.go +++ b/api/handlers/main.go @@ -15,16 +15,13 @@ package handlers // @license.url https://www.mozilla.org/en-US/MPL/2.0/ // @schemes https -// @host dashboard.getconvoy.io +// @host us.getconvoy.cloud // @BasePath /api // @securityDefinitions.apikey ApiKeyAuth // @in header // @name Authorization -// @tag.name Organisations -// @tag.description Organisation related APIs - // @tag.name Subscriptions // @tag.description Subscription related APIs @@ -43,14 +40,20 @@ package handlers // @tag.name Delivery Attempts // @tag.description Delivery Attempt related APIs -// @tag.name Projects -// @tag.description Project related APIs - // @tag.name Portal Links // @tag.description Portal Links related APIs // @tag.name Meta Events // @tag.description Meta Events related APIs +// @tag.name EventTypes +// @tag.description Event Types related APIs + +// @tag.name Filters +// @tag.description Filters related APIs + +// @tag.name Onboard +// @tag.description Onboard related APIs + // Stub represents empty json or arbitrary json bodies for our doc annotations type Stub struct{} diff --git a/api/models/models.go b/api/models/models.go index 6c8bdcd5b3..81488457ac 100644 --- a/api/models/models.go +++ b/api/models/models.go @@ -12,7 +12,7 @@ import ( type PagedResponse struct { Content interface{} `json:"content,omitempty"` - Pagination *datastore.PaginationData `json:"pagination,omitempty"` + Pagination *datastore.PaginationData `json:"pagination,omitempty" extensions:"x-nullable"` } type Organisation struct { @@ -39,14 +39,14 @@ type APIKeyByIDResponse struct { Name string `json:"name"` Role auth.Role `json:"role"` Type datastore.KeyType `json:"key_type"` - ExpiresAt null.Time `json:"expires_at,omitempty"` + ExpiresAt null.Time `json:"expires_at,omitempty" extensions:"x-nullable"` CreatedAt time.Time `json:"created_at,omitempty"` UpdatedAt time.Time `json:"updated_at,omitempty"` } type UserInviteTokenResponse struct { - Token *datastore.OrganisationInvite `json:"token"` - User *datastore.User `json:"user"` + Token *datastore.OrganisationInvite `json:"token" extensions:"x-nullable"` + User *datastore.User `json:"user" extensions:"x-nullable"` } type DeliveryAttempt struct { diff --git a/api/models/project.go b/api/models/project.go index 3d6b292a1a..bf1d6e98e3 100644 --- a/api/models/project.go +++ b/api/models/project.go @@ -203,8 +203,8 @@ type ProjectResponse struct { } type CreateProjectResponse struct { - APIKey *datastore.APIKeyResponse `json:"api_key"` - Project *ProjectResponse `json:"project"` + APIKey *datastore.APIKeyResponse `json:"api_key" extensions:"x-nullable"` + Project *ProjectResponse `json:"project" extensions:"x-nullable"` } func NewListProjectResponse(projects []*datastore.Project) []*ProjectResponse { diff --git a/api/models/source.go b/api/models/source.go index be400a1231..840f2d73b4 100644 --- a/api/models/source.go +++ b/api/models/source.go @@ -231,8 +231,8 @@ type CustomResponse struct { } type UpdateCustomResponse struct { - Body *string `json:"body"` - ContentType *string `json:"content_type"` + Body *string `json:"body" extensions:"x-nullable"` + ContentType *string `json:"content_type" extensions:"x-nullable"` } type VerifierConfig struct { From 474026ab38b296e468a45e8467173c4b409c2d94 Mon Sep 17 00:00:00 2001 From: Raymond Tukpe Date: Fri, 17 Apr 2026 11:36:48 +0200 Subject: [PATCH 5/9] Update pre-commit hook to improve OpenAPI spec generation and formatting --- .githooks/pre-commit | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.githooks/pre-commit b/.githooks/pre-commit index 4fe04a070e..db9073aee6 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -15,9 +15,15 @@ then exit 0 else # regenerate docs - swag init --generatedTime --parseDependency --parseInternal -g handlers/main.go -d api/ api/* + go run docs/annotate_dtos/main.go + swag init --generatedTime --parseDependency --parseDependencyLevel 3 --parseInternal -g handlers/main.go -d api/ api/* swag fmt -d ./api - go run v3gen/main.go + bash docs/fix_openapi_spec.sh + api-spec-converter --from=swagger_2 --to=openapi_3 -s yaml ./docs/swagger.yaml > ./docs/v3/openapi3.yaml + api-spec-converter --from=swagger_2 --to=openapi_3 ./docs/swagger.json > ./docs/v3/openapi3.json + # add region descriptions and EU server (swag only supports a single host) + yq -i '.servers[0].description = "US Region" | .servers += [{"url": "https://eu.getconvoy.cloud/api", "description": "EU Region"}]' ./docs/v3/openapi3.yaml + jq '.servers[0].description = "US Region" | .servers += [{"url": "https://eu.getconvoy.cloud/api", "description": "EU Region"}]' ./docs/v3/openapi3.json > ./docs/v3/openapi3.json.tmp && mv ./docs/v3/openapi3.json.tmp ./docs/v3/openapi3.json git add docs/ # add all files under the generated doc folder to git fi From 0cc59077353f36d8235947ea40ea1a4912c44842 Mon Sep 17 00:00:00 2001 From: Raymond Tukpe Date: Fri, 17 Apr 2026 15:09:26 +0200 Subject: [PATCH 6/9] Enhance OpenAPI spec generation with new validation checks, tooling preflight, and updated documentation scripts --- .githooks/pre-commit | 10 ++++++++++ .mise-tasks/gen/docs.sh | 11 +++++++++++ Makefile | 20 +++++++++++++++++++- docs/fix_openapi_spec.sh | 35 +---------------------------------- 4 files changed, 41 insertions(+), 35 deletions(-) diff --git a/.githooks/pre-commit b/.githooks/pre-commit index db9073aee6..c35cb0e0fc 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -14,6 +14,11 @@ if [ -z "$changed" ] then exit 0 else + # check required tools + for tool in swag jq yq api-spec-converter openapi; do + command -v "$tool" >/dev/null 2>&1 || { echo "❌ $tool not found. Install with 'mise install' or manually:"; echo " swag: go install github.com/swaggo/swag/cmd/swag@latest"; echo " jq: brew install jq"; echo " yq: brew install yq"; echo " api-spec-converter: npm install -g api-spec-converter"; echo " openapi: go install github.com/speakeasy-api/openapi/cmd/openapi@latest"; exit 1; } + done + # regenerate docs go run docs/annotate_dtos/main.go swag init --generatedTime --parseDependency --parseDependencyLevel 3 --parseInternal -g handlers/main.go -d api/ api/* @@ -24,6 +29,11 @@ else # add region descriptions and EU server (swag only supports a single host) yq -i '.servers[0].description = "US Region" | .servers += [{"url": "https://eu.getconvoy.cloud/api", "description": "EU Region"}]' ./docs/v3/openapi3.yaml jq '.servers[0].description = "US Region" | .servers += [{"url": "https://eu.getconvoy.cloud/api", "description": "EU Region"}]' ./docs/v3/openapi3.json > ./docs/v3/openapi3.json.tmp && mv ./docs/v3/openapi3.json.tmp ./docs/v3/openapi3.json + # validate specs + openapi swagger validate ./docs/swagger.json + openapi swagger validate ./docs/swagger.yaml + openapi spec validate ./docs/v3/openapi3.yaml + git add docs/ # add all files under the generated doc folder to git fi diff --git a/.mise-tasks/gen/docs.sh b/.mise-tasks/gen/docs.sh index 0a08746068..31b7cd94c3 100755 --- a/.mise-tasks/gen/docs.sh +++ b/.mise-tasks/gen/docs.sh @@ -6,6 +6,11 @@ set -e +# preflight: check required tools +for tool in swag jq yq api-spec-converter openapi; do + command -v "$tool" >/dev/null 2>&1 || { echo "❌ $tool not found. Run 'mise install' to install required tools."; exit 1; } +done + echo "Generating docs" #generate custom swag tags @@ -25,3 +30,9 @@ api-spec-converter --from=swagger_2 --to=openapi_3 ./docs/swagger.json > ./docs/ # add region descriptions and EU server (swag only supports a single host) yq -i '.servers[0].description = "US Region" | .servers += [{"url": "https://eu.getconvoy.cloud/api", "description": "EU Region"}]' ./docs/v3/openapi3.yaml jq '.servers[0].description = "US Region" | .servers += [{"url": "https://eu.getconvoy.cloud/api", "description": "EU Region"}]' ./docs/v3/openapi3.json > ./docs/v3/openapi3.json.tmp && mv ./docs/v3/openapi3.json.tmp ./docs/v3/openapi3.json + +# validate specs +echo "Validating specs..." +openapi swagger validate ./docs/swagger.json +openapi swagger validate ./docs/swagger.yaml +openapi spec validate ./docs/v3/openapi3.yaml diff --git a/Makefile b/Makefile index 7ef9f0843e..7e2ef8dbdd 100644 --- a/Makefile +++ b/Makefile @@ -103,7 +103,25 @@ migrate_create: @go run cmd/main.go migrate create generate_docs: - swag init --generatedTime --parseDependency --parseInternal -d api/ api/* + @echo "Checking required tools..." + @command -v swag >/dev/null 2>&1 || { echo "swag not found. Install: go install github.com/swaggo/swag/cmd/swag@latest"; exit 1; } + @command -v jq >/dev/null 2>&1 || { echo "jq not found. Install: brew install jq (macOS) or apt-get install jq (Linux)"; exit 1; } + @command -v yq >/dev/null 2>&1 || { echo "yq not found. Install: brew install yq (macOS) or snap install yq (Linux)"; exit 1; } + @command -v api-spec-converter >/dev/null 2>&1 || { echo "api-spec-converter not found. Install: npm install -g api-spec-converter"; exit 1; } + @command -v openapi >/dev/null 2>&1 || { echo "openapi not found. Install: go install github.com/speakeasy-api/openapi/cmd/openapi@latest"; exit 1; } + @echo "Generating docs..." + go run docs/annotate_dtos/main.go + swag init --generatedTime --parseDependency --parseDependencyLevel 3 --parseInternal -g handlers/main.go -d api/ api/* + swag fmt -d ./api + bash docs/fix_openapi_spec.sh + api-spec-converter --from=swagger_2 --to=openapi_3 -s yaml ./docs/swagger.yaml > ./docs/v3/openapi3.yaml + api-spec-converter --from=swagger_2 --to=openapi_3 ./docs/swagger.json > ./docs/v3/openapi3.json + yq -i '.servers[0].description = "US Region" | .servers += [{"url": "https://eu.getconvoy.cloud/api", "description": "EU Region"}]' ./docs/v3/openapi3.yaml + jq '.servers[0].description = "US Region" | .servers += [{"url": "https://eu.getconvoy.cloud/api", "description": "EU Region"}]' ./docs/v3/openapi3.json > ./docs/v3/openapi3.json.tmp && mv ./docs/v3/openapi3.json.tmp ./docs/v3/openapi3.json + @echo "Validating specs..." + openapi swagger validate ./docs/swagger.json + openapi swagger validate ./docs/swagger.yaml + openapi spec validate ./docs/v3/openapi3.yaml run_dependencies: docker compose -f docker-compose.dep.yml up -d diff --git a/docs/fix_openapi_spec.sh b/docs/fix_openapi_spec.sh index 4b28bc9045..6caf20e321 100755 --- a/docs/fix_openapi_spec.sh +++ b/docs/fix_openapi_spec.sh @@ -3,15 +3,6 @@ echo "đŸ”Ĩ Fixing Swagger 2.0 specs (all issues in one pass)..." -# Check OS for sed compatibility -if [[ "$(uname)" == "Darwin" ]]; then - # macOS requires an empty string argument after -i - sed_inplace() { sed -i '' "$@"; } -else - # Linux - sed_inplace() { sed -i "$@"; } -fi - # Check for required tools if ! command -v jq &> /dev/null; then echo "❌ jq is required. Install with: brew install jq (macOS) or apt-get install jq (Linux)" @@ -34,30 +25,7 @@ fix_file_inplace() { echo "Processing: $file" - # Create backup - cp "$file" "${file}.bak" - - # Step 1: First fix nullable with sed (works on both JSON and YAML) - echo " Step 1: Fixing nullable fields..." - - if [[ "$file" == *.json ]]; then - # JSON fixes - sed_inplace 's/"x-nullable": true/"nullable": true/g' "$file" - sed_inplace 's/"x-nullable": false//g' "$file" - # Clean up extra commas - sed_inplace 's/,,/,/g' "$file" - sed_inplace 's/{,/{/g' "$file" - sed_inplace 's/,}/}/g' "$file" - - elif [[ "$file" == *.yaml ]] || [[ "$file" == *.yml ]]; then - # YAML fixes - sed_inplace 's/x-nullable: true/nullable: true/g' "$file" - sed_inplace '/x-nullable: false/d' "$file" - sed_inplace '/^[[:space:]]*x-nullable:/d' "$file" - fi - - # Step 2: Use jq/yq for structural fixes - echo " Step 2: Fixing content-type, produces, and allOf structures..." + echo " Fixing content-type, produces, and allOf structures..." # Create temp file tmpfile=$(mktemp) @@ -135,7 +103,6 @@ fix_file_inplace() { # Cleanup rm "$tmpfile" - rm "${file}.bak" echo "" } From 2ba3d85591c441b9738fe91e3ca2e5da07c532da Mon Sep 17 00:00:00 2001 From: Raymond Tukpe Date: Fri, 17 Apr 2026 15:09:40 +0200 Subject: [PATCH 7/9] Update autogenerated Swagger docs and bump version to 26.3.5 --- api/handlers/main.go | 4 ++-- docs/docs.go | 6 +++--- docs/swagger.json | 10 +++++----- docs/swagger.yaml | 10 +++++----- docs/v3/openapi3.json | 4 ++-- docs/v3/openapi3.yaml | 4 ++-- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/api/handlers/main.go b/api/handlers/main.go index 46287132e0..c10fe9e8eb 100644 --- a/api/handlers/main.go +++ b/api/handlers/main.go @@ -3,8 +3,8 @@ package handlers // This is the main doc file, swag cli needs it to be named main.go // @title Convoy API Reference -// @version 24.1.4 -// @description Convoy is a fast and secure webhooks proxy. This document contains datastore.s API specification. +// @version 26.3.5 +// @description Convoy is a fast and secure webhooks proxy. This document contains datastore's API specification. // @termsOfService https://getconvoy.io/terms // @contact.name Convoy Support diff --git a/docs/docs.go b/docs/docs.go index 8aebeacf7b..b96135e6f5 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1,4 +1,4 @@ -// Package docs Code generated by swaggo/swag at 2026-04-17 11:31:54.508205 +0200 CEST m=+2.154965584. DO NOT EDIT +// Package docs Code generated by swaggo/swag at 2026-04-17 15:04:42.973697 +0200 CEST m=+2.169334418. DO NOT EDIT package docs import "github.com/swaggo/swag" @@ -10633,12 +10633,12 @@ const docTemplate = `{ // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ - Version: "24.1.4", + Version: "26.3.5", Host: "us.getconvoy.cloud", BasePath: "/api", Schemes: []string{"https"}, Title: "Convoy API Reference", - Description: "Convoy is a fast and secure webhooks proxy. This document contains datastore.s API specification.", + Description: "Convoy is a fast and secure webhooks proxy. This document contains datastore's API specification.", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, LeftDelim: "{{", diff --git a/docs/swagger.json b/docs/swagger.json index 17260c0dfe..a8a5a2392d 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -4,7 +4,7 @@ ], "swagger": "2.0", "info": { - "description": "Convoy is a fast and secure webhooks proxy. This document contains datastore.s API specification.", + "description": "Convoy is a fast and secure webhooks proxy. This document contains datastore's API specification.", "title": "Convoy API Reference", "termsOfService": "https://getconvoy.io/terms", "contact": { @@ -16,7 +16,7 @@ "name": "Mozilla Public License 2.0", "url": "https://www.mozilla.org/en-US/MPL/2.0/" }, - "version": "24.1.4" + "version": "26.3.5" }, "host": "us.getconvoy.cloud", "basePath": "/api", @@ -9999,7 +9999,7 @@ "$ref": "#/definitions/datastore.PaginationData" } ], - "nullable": true + "x-nullable": true } } }, @@ -10282,11 +10282,11 @@ "properties": { "body": { "type": "string", - "nullable": true + "x-nullable": true }, "content_type": { "type": "string", - "nullable": true + "x-nullable": true } } }, diff --git a/docs/swagger.yaml b/docs/swagger.yaml index abff18e394..4fe8d661fc 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1708,7 +1708,7 @@ definitions: pagination: allOf: - $ref: '#/definitions/datastore.PaginationData' - nullable: true + x-nullable: true type: object models.PubSubConfig: properties: @@ -1889,10 +1889,10 @@ definitions: properties: body: type: string - nullable: true + x-nullable: true content_type: type: string - nullable: true + x-nullable: true type: object models.UpdateEndpoint: properties: @@ -2110,13 +2110,13 @@ info: 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. + 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: 24.1.4 + version: 26.3.5 paths: /v1/projects/{projectID}/endpoints: get: diff --git a/docs/v3/openapi3.json b/docs/v3/openapi3.json index f782bc4af9..1e41cddbf8 100644 --- a/docs/v3/openapi3.json +++ b/docs/v3/openapi3.json @@ -6,14 +6,14 @@ "name": "Convoy Support", "url": "https://getconvoy.io/docs" }, - "description": "Convoy is a fast and secure webhooks proxy. This document contains datastore.s API specification.", + "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": "24.1.4" + "version": "26.3.5" }, "servers": [ { diff --git a/docs/v3/openapi3.yaml b/docs/v3/openapi3.yaml index a0196c303c..10f109520f 100644 --- a/docs/v3/openapi3.yaml +++ b/docs/v3/openapi3.yaml @@ -5,13 +5,13 @@ info: name: Convoy Support url: 'https://getconvoy.io/docs' description: >- - Convoy is a fast and secure webhooks proxy. This document contains datastore.s API specification. + 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: 24.1.4 + version: 26.3.5 servers: - url: 'https://us.getconvoy.cloud/api' description: US Region From 460b027119a31d4f4a9d02e70d99fb84900cb2a5 Mon Sep 17 00:00:00 2001 From: Raymond Tukpe Date: Mon, 20 Apr 2026 19:18:29 +0200 Subject: [PATCH 8/9] Streamline tooling checks for docs generation and pre-commit, add `openapi` to `mise.toml` --- .githooks/pre-commit | 2 +- Makefile | 10 ++++------ mise.toml | 1 + 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.githooks/pre-commit b/.githooks/pre-commit index c35cb0e0fc..3691096ca5 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -16,7 +16,7 @@ then else # check required tools for tool in swag jq yq api-spec-converter openapi; do - command -v "$tool" >/dev/null 2>&1 || { echo "❌ $tool not found. Install with 'mise install' or manually:"; echo " swag: go install github.com/swaggo/swag/cmd/swag@latest"; echo " jq: brew install jq"; echo " yq: brew install yq"; echo " api-spec-converter: npm install -g api-spec-converter"; echo " openapi: go install github.com/speakeasy-api/openapi/cmd/openapi@latest"; exit 1; } + command -v "$tool" >/dev/null 2>&1 || { echo "❌ $tool not found. Run 'mise install' to install all required tools."; exit 1; } done # regenerate docs diff --git a/Makefile b/Makefile index 7e2ef8dbdd..00c81da3a3 100644 --- a/Makefile +++ b/Makefile @@ -103,12 +103,10 @@ migrate_create: @go run cmd/main.go migrate create generate_docs: - @echo "Checking required tools..." - @command -v swag >/dev/null 2>&1 || { echo "swag not found. Install: go install github.com/swaggo/swag/cmd/swag@latest"; exit 1; } - @command -v jq >/dev/null 2>&1 || { echo "jq not found. Install: brew install jq (macOS) or apt-get install jq (Linux)"; exit 1; } - @command -v yq >/dev/null 2>&1 || { echo "yq not found. Install: brew install yq (macOS) or snap install yq (Linux)"; exit 1; } - @command -v api-spec-converter >/dev/null 2>&1 || { echo "api-spec-converter not found. Install: npm install -g api-spec-converter"; exit 1; } - @command -v openapi >/dev/null 2>&1 || { echo "openapi not found. Install: go install github.com/speakeasy-api/openapi/cmd/openapi@latest"; exit 1; } + @echo "Checking required tools (run 'mise install' to install all)..." + @for tool in swag jq yq api-spec-converter openapi; do \ + command -v "$$tool" >/dev/null 2>&1 || { echo "❌ $$tool not found. Run 'mise install' to install all required tools."; exit 1; }; \ + done @echo "Generating docs..." go run docs/annotate_dtos/main.go swag init --generatedTime --parseDependency --parseDependencyLevel 3 --parseInternal -g handlers/main.go -d api/ api/* diff --git a/mise.toml b/mise.toml index cd6b25a08f..db87c913a0 100644 --- a/mise.toml +++ b/mise.toml @@ -20,6 +20,7 @@ yq = "latest" "go:go.uber.org/mock/mockgen" = "latest" "go:github.com/sqlc-dev/sqlc/cmd/sqlc" = "1.30.0" "go:github.com/daixiang0/gci" = "latest" +"ubi:speakeasy-api/openapi" = "latest" # â„šī¸ The settings below are sensible defaults for local development. When # deploying to production, you will want to configure these more carefully. From 8ac9b3188cb3299d254c23622a8895ae5d7b8ba4 Mon Sep 17 00:00:00 2001 From: Raymond Tukpe Date: Mon, 20 Apr 2026 19:18:37 +0200 Subject: [PATCH 9/9] Remove unused override for `dtoDir` in annotation script --- docs/annotate_dtos/main.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/annotate_dtos/main.go b/docs/annotate_dtos/main.go index 264d430ec6..5742fd3102 100644 --- a/docs/annotate_dtos/main.go +++ b/docs/annotate_dtos/main.go @@ -18,10 +18,6 @@ func main() { dryRun := len(os.Args) > 1 && os.Args[1] == "--dry-run" dtoDir := "./api/models" - if len(os.Args) > 2 { - dtoDir = os.Args[2] - } - fmt.Printf("Using AST to add nullable extensions in: %s\n", dtoDir) err := filepath.Walk(dtoDir, func(path string, info os.FileInfo, err error) error {