Merged in feature/openapiowasp (pull request #101)

Remove OWASP Errors

* started

* somewarns

* somewarns

* gen
This commit is contained in:
Michael McGuinness
2025-03-12 00:59:58 +00:00
parent bbd86fb4ea
commit d60eb9b16b
4 changed files with 256 additions and 57 deletions
+87 -50
View File
@@ -12,6 +12,7 @@ import (
"net/url"
"path"
"strings"
"time"
"github.com/getkin/kin-openapi/openapi3"
"github.com/labstack/echo/v4"
@@ -19,6 +20,10 @@ import (
openapi_types "github.com/oapi-codegen/runtime/types"
)
const (
PlaceholderAuthScopes = "placeholderAuth.Scopes"
)
// Defines values for ClientStatus.
const (
INSYNC ClientStatus = "IN_SYNC"
@@ -206,10 +211,10 @@ type ExportTrigger struct {
// IngestionFilters Filter the scope based on ingestion parameters.
IngestionFilters *struct {
// EndDate The last date of ingestion.
EndDate *string `json:"end_date,omitempty"`
EndDate *time.Time `json:"end_date,omitempty"`
// StartDate This first date of ingestion.
StartDate *string `json:"start_date,omitempty"`
StartDate *time.Time `json:"start_date,omitempty"`
} `json:"ingestion_filters,omitempty"`
}
@@ -394,6 +399,8 @@ type ServerInterfaceWrapper struct {
func (w *ServerInterfaceWrapper) CreateClient(ctx echo.Context) error {
var err error
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.CreateClient(ctx)
return err
@@ -426,6 +433,8 @@ func (w *ServerInterfaceWrapper) UpdateClient(ctx echo.Context) error {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
}
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.UpdateClient(ctx, id)
return err
@@ -442,6 +451,8 @@ func (w *ServerInterfaceWrapper) GetCollectorByClientId(ctx echo.Context) error
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
}
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetCollectorByClientId(ctx, id)
return err
@@ -458,6 +469,8 @@ func (w *ServerInterfaceWrapper) SetCollectorByClientId(ctx echo.Context) error
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
}
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.SetCollectorByClientId(ctx, id)
return err
@@ -474,6 +487,8 @@ func (w *ServerInterfaceWrapper) ListDocumentsByClientId(ctx echo.Context) error
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
}
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.ListDocumentsByClientId(ctx, id)
return err
@@ -490,6 +505,8 @@ func (w *ServerInterfaceWrapper) TriggerExport(ctx echo.Context) error {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
}
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.TriggerExport(ctx, id)
return err
@@ -506,6 +523,8 @@ func (w *ServerInterfaceWrapper) GetStatusByClientId(ctx echo.Context) error {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
}
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetStatusByClientId(ctx, id)
return err
@@ -522,6 +541,8 @@ func (w *ServerInterfaceWrapper) ExportState(ctx echo.Context) error {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
}
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.ExportState(ctx, id)
return err
@@ -531,6 +552,8 @@ func (w *ServerInterfaceWrapper) ExportState(ctx echo.Context) error {
func (w *ServerInterfaceWrapper) ListQueries(ctx echo.Context) error {
var err error
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.ListQueries(ctx)
return err
@@ -540,6 +563,8 @@ func (w *ServerInterfaceWrapper) ListQueries(ctx echo.Context) error {
func (w *ServerInterfaceWrapper) CreateQuery(ctx echo.Context) error {
var err error
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.CreateQuery(ctx)
return err
@@ -556,6 +581,8 @@ func (w *ServerInterfaceWrapper) GetQuery(ctx echo.Context) error {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
}
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.GetQuery(ctx, id)
return err
@@ -572,6 +599,8 @@ func (w *ServerInterfaceWrapper) UpdateQuery(ctx echo.Context) error {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
}
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.UpdateQuery(ctx, id)
return err
@@ -588,6 +617,8 @@ func (w *ServerInterfaceWrapper) TestQuery(ctx echo.Context) error {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
}
ctx.Set(PlaceholderAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.TestQuery(ctx, id)
return err
@@ -641,54 +672,60 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
"AAA=",
"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",
}
// GetSwagger returns the content of the embedded swagger specification file
+7 -2
View File
@@ -12,11 +12,16 @@ import (
"net/http"
"net/url"
"strings"
"time"
"github.com/oapi-codegen/runtime"
openapi_types "github.com/oapi-codegen/runtime/types"
)
const (
PlaceholderAuthScopes = "placeholderAuth.Scopes"
)
// Defines values for ClientStatus.
const (
INSYNC ClientStatus = "IN_SYNC"
@@ -204,10 +209,10 @@ type ExportTrigger struct {
// IngestionFilters Filter the scope based on ingestion parameters.
IngestionFilters *struct {
// EndDate The last date of ingestion.
EndDate *string `json:"end_date,omitempty"`
EndDate *time.Time `json:"end_date,omitempty"`
// StartDate This first date of ingestion.
StartDate *string `json:"start_date,omitempty"`
StartDate *time.Time `json:"start_date,omitempty"`
} `json:"ingestion_filters,omitempty"`
}
+1 -1
View File
@@ -7,7 +7,7 @@ tasks:
lint:
cmds:
- |
vacuum lint ./serviceAPIs/queryService.yaml -b -d -e --no-clip \
vacuum lint ./serviceAPIs/queryService.yaml -b -d -e --no-clip -z \
{{.CLI_ARGS}}
generate:
- |
+161 -4
View File
@@ -3,9 +3,9 @@ openapi: 3.0.3
info:
title: Query Orchestration API
description: API documentation for the Query Orchestration services.
version: 1.0.0
version: 0.0.1
servers:
- url: https://api.example.com/v1
- url: https://doczy.com/v1
description: Production server
tags:
- name: ClientService
@@ -27,6 +27,8 @@ paths:
- ClientService
summary: Create a new client
description: Creates a new client with the provided details.
security:
- placeholderAuth: []
requestBody:
description: The details required to create a client
required: true
@@ -37,12 +39,17 @@ paths:
responses:
"201":
description: Client created successfully.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
content:
application/json:
schema:
$ref: "#/components/schemas/ClientIDBody"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
/client/{id}:
parameters:
@@ -56,18 +63,25 @@ paths:
responses:
"200":
description: Client details.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
content:
application/json:
schema:
$ref: "#/components/schemas/DocClient"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
patch:
operationId: updateClient
tags:
- ClientService
summary: Update a client
description: Updates an existing client with new details.
security:
- placeholderAuth: []
requestBody:
description: The details to update
required: true
@@ -78,8 +92,13 @@ paths:
responses:
"200":
description: Client updated successfully.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
/query:
get:
@@ -88,21 +107,30 @@ paths:
- QueryService
summary: List queries
description: Retrieves a list of queries based on filter criteria.
security:
- placeholderAuth: []
responses:
"200":
description: A list of queries.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
content:
application/json:
schema:
$ref: "#/components/schemas/ListQueries"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
post:
operationId: createQuery
tags:
- QueryService
summary: Create a new query
description: Creates a new query with the provided details.
security:
- placeholderAuth: []
requestBody:
description: The details required to create a query
required: true
@@ -113,12 +141,17 @@ paths:
responses:
"201":
description: Query created successfully.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
content:
application/json:
schema:
$ref: "#/components/schemas/IdMessage"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
/query/{id}:
parameters:
@@ -129,21 +162,30 @@ paths:
- QueryService
summary: Get a query by ID
description: Retrieves a specific query by its ID.
security:
- placeholderAuth: []
responses:
"200":
description: Query details.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
content:
application/json:
schema:
$ref: "#/components/schemas/Query"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
patch:
operationId: updateQuery
tags:
- QueryService
summary: Update a query
description: Updates an existing query with new details.
security:
- placeholderAuth: []
requestBody:
description: The update values for the desired query.
required: true
@@ -154,8 +196,13 @@ paths:
responses:
"200":
description: Query updated successfully.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
/query/{id}/test:
parameters:
@@ -166,6 +213,8 @@ paths:
- QueryService
summary: Test a query
description: Executes a test run of a query with the provided parameters.
security:
- placeholderAuth: []
requestBody:
description: The query test requirements.
required: true
@@ -176,12 +225,17 @@ paths:
responses:
"200":
description: Test result.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
content:
application/json:
schema:
$ref: "#/components/schemas/QueryTestResponse"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
/client/{id}/status:
parameters:
@@ -192,15 +246,22 @@ paths:
- ClientService
summary: Get client sync status
description: Retrieves the sync status by its client ID.
security:
- placeholderAuth: []
responses:
"200":
description: Client status details.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
content:
application/json:
schema:
$ref: "#/components/schemas/ClientStatusBody"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
/client/{id}/collector:
parameters:
@@ -211,21 +272,30 @@ paths:
- CollectorService
summary: Get a collector by client ID
description: Retrieves a specific collector by its client ID.
security:
- placeholderAuth: []
responses:
"200":
description: Collector details.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
content:
application/json:
schema:
$ref: "#/components/schemas/Collector"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
patch:
operationId: setCollectorByClientId
tags:
- CollectorService
summary: Set a collector
description: Set client collector with new details.
security:
- placeholderAuth: []
requestBody:
description: The details to be set for the collector.
required: true
@@ -236,8 +306,13 @@ paths:
responses:
"204":
description: Collector set successfully.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
/client/{id}/documents:
parameters:
@@ -248,15 +323,22 @@ paths:
- DocumentsService
summary: List the documents for a client
description: Retrieves the list of documents by the client ID.
security:
- placeholderAuth: []
responses:
"200":
description: Client documents list.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
content:
application/json:
schema:
$ref: "#/components/schemas/ListDocuments"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
/client/{id}/export:
parameters:
@@ -267,6 +349,8 @@ paths:
- ExportService
summary: Trigger an export
description: Initiates the export process.
security:
- placeholderAuth: []
requestBody:
description: The export requirements.
required: true
@@ -277,12 +361,17 @@ paths:
responses:
"201":
description: Export triggered successfully.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
content:
application/json:
schema:
$ref: "#/components/schemas/IdMessage"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
/export/{id}:
parameters:
@@ -293,15 +382,22 @@ paths:
- ExportService
summary: Check export state.
description: Checks the current state of an export.
security:
- placeholderAuth: []
responses:
"200":
description: Export has been completed.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
content:
application/json:
schema:
$ref: "#/components/schemas/ExportDetails"
"400":
$ref: "#/components/responses/InvalidRequest"
"500":
$ref: "#/components/responses/InternalError"
components:
parameters:
@@ -329,44 +425,77 @@ components:
$ref: "#/components/schemas/QueryID"
description: The ID of the query.
headers:
RateLimit:
schema:
type: string
pattern: "^[0-9]+;window=[0-9]+$"
maxLength: 32
description: Rate limit information in format "limit;window=time-window"
example: "100;window=60"
securitySchemes:
placeholderAuth:
type: apiKey
in: header
name: X-API-Key
description: "Placeholder security scheme for future implementation"
responses:
InvalidRequest:
description: Invalid request body.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
InternalError:
description: Internal server error.
headers:
RateLimit:
$ref: "#/components/headers/RateLimit"
schemas:
ClientID:
type: string
description: The client external id
example: AAA
maxLength: 36
pattern: "^.+$"
ClientUID:
type: string
format: uuid
description: The client internal unique id
example: 0195853c-8fdd-77cd-b36c-255241bddd33
maxLength: 36
QueryID:
type: string
format: uuid
description: The query id.
example: 019580df-ef65-7676-8de9-94435a93337a
maxLength: 36
DocumentID:
type: string
format: uuid
description: The document id.
example: 019580df-b3f8-7348-9ab1-1e55b3f18ed7
maxLength: 36
ExportID:
type: string
format: uuid
description: The export id.
example: 019580de-4d51-713c-98ee-464e83811f13
maxLength: 36
ClientName:
type: string
description: The client name
example: AArete
maxLength: 256
pattern: "^.+$"
ClientCanSync:
type: boolean
@@ -382,6 +511,8 @@ components:
QueryConfig:
type: string
description: Configuration for the query.
maxLength: 2048
pattern: '^\{.+\}$'
Query:
description: A logic unit of execution.
@@ -411,6 +542,7 @@ components:
properties:
queries:
type: array
maxItems: 512
items:
$ref: "#/components/schemas/Query"
description: List of queries.
@@ -432,6 +564,7 @@ components:
RequiredQueryIDs:
type: array
maxItems: 256
items:
$ref: "#/components/schemas/QueryID"
description: List of required query IDs.
@@ -466,6 +599,8 @@ components:
value:
type: string
description: Result of the query test.
pattern: "^.+$"
maxLength: 2048
required:
- value
@@ -516,6 +651,7 @@ components:
ListDocuments:
type: array
description: The documents in the client.
maxItems: 256
items:
$ref: "#/components/schemas/Document"
@@ -528,9 +664,13 @@ components:
bucket:
type: string
description: The bucket containing the document
maxLength: 256
pattern: "^.+$"
key:
type: string
description: The path to the document
maxLength: 2048
pattern: "^.+/.+$"
required:
- id
- bucket
@@ -565,17 +705,22 @@ components:
type: string
format: uuid
description: Unique identifier for entity.
maxLength: 36
required:
- id
CodeVersion:
type: integer
format: int64
minimum: 1
maximum: 9223372036854775808
description: The desired code version.
Version:
type: integer
format: int32
minimum: 0
maximum: 2147483647
description: The desired version.
Collector:
@@ -604,6 +749,7 @@ components:
CollectorFields:
type: array
maxItems: 256
description: The fields in the collector.
items:
$ref: "#/components/schemas/CollectorField"
@@ -623,6 +769,8 @@ components:
CollectorFieldName:
type: string
pattern: "^[a-zA-Z]+$"
maxLength: 256
description: The output field name.
CollectorField:
@@ -646,12 +794,17 @@ components:
properties:
start_date:
type: string
format: date-time
maxLength: 32
description: This first date of ingestion.
end_date:
type: string
format: date-time
maxLength: 32
description: The last date of ingestion.
field_filters:
type: array
maxItems: 256
description: Filter the scope based on field output values.
items:
$ref: "#/components/schemas/FieldFilter"
@@ -667,8 +820,11 @@ components:
values:
type: array
description: The values useful to the filter.
maxItems: 100
items:
type: string
pattern: "^.+$"
maxLength: 256
description: Filtering a column
required:
- field_name
@@ -706,8 +862,9 @@ components:
output_location:
type: string
description: The location in which the export zip file will be found.
example: |
s3://{bucket_name}/{external_client_id}/yyyymmdd/{export_id}.csv
example: s3://abc/AA/20250213/019587ac-073b-7098-8426-bad970f8c974.csv
maxLength: 2048
pattern: '^s3://.+/.+/[0-9]{8}/.+\.csv$'
description: Payload for export trigger response.
required:
- client_id