--- openapi: 3.0.3 info: title: Query Orchestration API description: API documentation for the Query Orchestration services. version: 1.0.0 servers: - url: https://api.example.com/v1 description: Production server tags: - name: ClientService description: Operations related to clients - name: CollectorService description: Operations related to collectors - name: DocumentsService description: Operations related to documents - name: QueryService description: Operations related to queries - name: ExportService description: Operations related to exports paths: /client: post: operationId: createClient tags: - ClientService summary: Create a new client description: Creates a new client with the provided details. requestBody: description: The details required to create a client required: true content: application/json: schema: $ref: "#/components/schemas/ClientCreate" responses: "201": description: Client created successfully. content: application/json: schema: $ref: "#/components/schemas/ClientIDBody" "400": $ref: "#/components/responses/InvalidRequest" /client/{id}: parameters: - $ref: "#/components/parameters/ClientID" get: operationId: getClient tags: - ClientService summary: Get a client by ID description: Retrieves a specific client by its ID. responses: "200": description: Client details. content: application/json: schema: $ref: "#/components/schemas/DocClient" "400": $ref: "#/components/responses/InvalidRequest" patch: operationId: updateClient tags: - ClientService summary: Update a client description: Updates an existing client with new details. requestBody: description: The details to update required: true content: application/json: schema: $ref: "#/components/schemas/ClientUpdate" responses: "200": description: Client updated successfully. "400": $ref: "#/components/responses/InvalidRequest" /query: get: operationId: listQueries tags: - QueryService summary: List queries description: Retrieves a list of queries based on filter criteria. responses: "200": description: A list of queries. content: application/json: schema: $ref: "#/components/schemas/ListQueries" "400": $ref: "#/components/responses/InvalidRequest" post: operationId: createQuery tags: - QueryService summary: Create a new query description: Creates a new query with the provided details. requestBody: description: The details required to create a query required: true content: application/json: schema: $ref: "#/components/schemas/QueryCreate" responses: "201": description: Query created successfully. content: application/json: schema: $ref: "#/components/schemas/IdMessage" "400": $ref: "#/components/responses/InvalidRequest" /query/{id}: parameters: - $ref: "#/components/parameters/QueryID" get: operationId: getQuery tags: - QueryService summary: Get a query by ID description: Retrieves a specific query by its ID. responses: "200": description: Query details. content: application/json: schema: $ref: "#/components/schemas/Query" "400": $ref: "#/components/responses/InvalidRequest" patch: operationId: updateQuery tags: - QueryService summary: Update a query description: Updates an existing query with new details. requestBody: description: The update values for the desired query. required: true content: application/json: schema: $ref: "#/components/schemas/QueryUpdate" responses: "200": description: Query updated successfully. "400": $ref: "#/components/responses/InvalidRequest" /query/{id}/test: parameters: - $ref: "#/components/parameters/QueryID" post: operationId: testQuery tags: - QueryService summary: Test a query description: Executes a test run of a query with the provided parameters. requestBody: description: The query test requirements. required: true content: application/json: schema: $ref: "#/components/schemas/QueryTestRequest" responses: "200": description: Test result. content: application/json: schema: $ref: "#/components/schemas/QueryTestResponse" "400": $ref: "#/components/responses/InvalidRequest" /client/{id}/status: parameters: - $ref: "#/components/parameters/ClientID" get: operationId: getStatusByClientId tags: - ClientService summary: Get client sync status description: Retrieves the sync status by its client ID. responses: "200": description: Client status details. content: application/json: schema: $ref: "#/components/schemas/ClientStatusBody" "400": $ref: "#/components/responses/InvalidRequest" /client/{id}/collector: parameters: - $ref: "#/components/parameters/ClientID" get: operationId: getCollectorByClientId tags: - CollectorService summary: Get a collector by client ID description: Retrieves a specific collector by its client ID. responses: "200": description: Collector details. content: application/json: schema: $ref: "#/components/schemas/Collector" "400": $ref: "#/components/responses/InvalidRequest" patch: operationId: setCollectorByClientId tags: - CollectorService summary: Set a collector description: Set client collector with new details. requestBody: description: The details to be set for the collector. required: true content: application/json: schema: $ref: "#/components/schemas/CollectorSet" responses: "204": description: Collector set successfully. "400": $ref: "#/components/responses/InvalidRequest" /client/{id}/documents: parameters: - $ref: "#/components/parameters/ClientID" get: operationId: listDocumentsByClientId tags: - DocumentsService summary: List the documents for a client description: Retrieves the list of documents by the client ID. responses: "200": description: Client documents list. content: application/json: schema: $ref: "#/components/schemas/ListDocuments" "400": $ref: "#/components/responses/InvalidRequest" /client/{id}/export: parameters: - $ref: "#/components/parameters/ClientID" post: operationId: triggerExport tags: - ExportService summary: Trigger an export description: Initiates the export process. requestBody: description: The export requirements. required: true content: application/json: schema: $ref: "#/components/schemas/ExportTrigger" responses: "201": description: Export triggered successfully. content: application/json: schema: $ref: "#/components/schemas/IdMessage" "400": $ref: "#/components/responses/InvalidRequest" /export/{id}: parameters: - $ref: "#/components/parameters/ExportID" get: operationId: exportState tags: - ExportService summary: Check export state. description: Checks the current state of an export. responses: "200": description: Export has been completed. content: application/json: schema: $ref: "#/components/schemas/ExportDetails" "400": $ref: "#/components/responses/InvalidRequest" components: parameters: ClientID: in: path name: id required: true schema: $ref: "#/components/schemas/ClientID" description: The client ID. ExportID: in: path name: id required: true schema: $ref: "#/components/schemas/ExportID" description: The export ID. QueryID: in: path name: id required: true schema: $ref: "#/components/schemas/QueryID" description: The ID of the query. responses: InvalidRequest: description: Invalid request body. schemas: ClientID: type: string description: The client external id example: AAA ClientUID: type: string format: uuid description: The client internal unique id example: 0195853c-8fdd-77cd-b36c-255241bddd33 QueryID: type: string format: uuid description: The query id. example: 019580df-ef65-7676-8de9-94435a93337a DocumentID: type: string format: uuid description: The document id. example: 019580df-b3f8-7348-9ab1-1e55b3f18ed7 ExportID: type: string format: uuid description: The export id. example: 019580de-4d51-713c-98ee-464e83811f13 ClientName: type: string description: The client name example: AArete ClientCanSync: type: boolean description: If the client is allowing active syncs QueryType: type: string enum: - JSON_EXTRACTOR - CONTEXT_FULL description: Specifies the type of the query. QueryConfig: type: string description: Configuration for the query. Query: description: A logic unit of execution. type: object properties: id: $ref: "#/components/schemas/QueryID" type: $ref: "#/components/schemas/QueryType" active_version: $ref: "#/components/schemas/Version" latest_version: $ref: "#/components/schemas/Version" config: $ref: "#/components/schemas/QueryConfig" required_queries: $ref: "#/components/schemas/RequiredQueryIDs" required: - id - type - active_version - latest_version ListQueries: description: A set of queries. type: object properties: queries: type: array items: $ref: "#/components/schemas/Query" description: List of queries. required: - queries QueryCreate: description: The parameters required to create a query. type: object properties: type: $ref: "#/components/schemas/QueryType" config: $ref: "#/components/schemas/QueryConfig" required_queries: $ref: "#/components/schemas/RequiredQueryIDs" required: - type RequiredQueryIDs: type: array items: $ref: "#/components/schemas/QueryID" description: List of required query IDs. QueryUpdate: description: The properties that may be updated for a query. type: object properties: config: $ref: "#/components/schemas/QueryConfig" active_version: $ref: "#/components/schemas/Version" required_queries: $ref: "#/components/schemas/RequiredQueryIDs" QueryTestRequest: description: The properties for a query test request. type: object properties: document_id: $ref: "#/components/schemas/DocumentID" query_version: $ref: "#/components/schemas/Version" required: - document_id - query_version QueryTestResponse: description: The response from a query test. type: object properties: value: type: string description: Result of the query test. required: - value DocClient: description: The properties of a client. type: object properties: uid: $ref: "#/components/schemas/ClientUID" id: $ref: "#/components/schemas/ClientID" name: $ref: "#/components/schemas/ClientName" can_sync: $ref: "#/components/schemas/ClientCanSync" required: - id - uid - name - can_sync ClientStatus: type: string enum: - IN_SYNC - NOT_SYNCED - NOT_SYNCING description: Specifies the status of a client. ClientStatusBody: description: A client status information object. type: object properties: status: $ref: "#/components/schemas/ClientStatus" required: - status ClientIDBody: description: The client id. type: object properties: id: $ref: "#/components/schemas/ClientID" required: - id ListDocuments: type: array description: The documents in the client. items: $ref: "#/components/schemas/Document" Document: description: The document properties. type: object properties: id: $ref: "#/components/schemas/DocumentID" bucket: type: string description: The bucket containing the document key: type: string description: The path to the document required: - id - bucket - key ClientCreate: description: The properties for creation. type: object properties: id: $ref: "#/components/schemas/ClientID" name: $ref: "#/components/schemas/ClientName" required: - id - name ClientUpdate: description: The properties that may be updated. type: object properties: name: $ref: "#/components/schemas/ClientName" can_sync: $ref: "#/components/schemas/ClientCanSync" IdMessage: description: A single uuid. type: object properties: id: type: string format: uuid description: Unique identifier for entity. required: - id CodeVersion: type: integer format: int64 description: The desired code version. Version: type: integer format: int32 description: The desired version. Collector: type: object properties: client_id: $ref: "#/components/schemas/ClientID" active_version: $ref: "#/components/schemas/Version" latest_version: $ref: "#/components/schemas/Version" minimum_cleaner_version: $ref: "#/components/schemas/CodeVersion" minimum_text_version: $ref: "#/components/schemas/CodeVersion" fields: $ref: "#/components/schemas/CollectorFields" description: Collector model. required: - client_id - fields - minimum_cleaner_version - minimum_text_version - latest_version - active_version CollectorFields: type: array description: The fields in the collector. items: $ref: "#/components/schemas/CollectorField" CollectorSet: type: object properties: minimum_cleaner_version: $ref: "#/components/schemas/CodeVersion" minimum_text_version: $ref: "#/components/schemas/CodeVersion" active_version: $ref: "#/components/schemas/Version" fields: $ref: "#/components/schemas/CollectorFields" description: Payload for updating a Collector. CollectorFieldName: type: string description: The output field name. CollectorField: type: object description: The field properties for the collector. properties: name: $ref: "#/components/schemas/CollectorFieldName" query_id: $ref: "#/components/schemas/QueryID" required: - name - query_id ExportTrigger: type: object properties: ingestion_filters: type: object description: Filter the scope based on ingestion parameters. properties: start_date: type: string description: This first date of ingestion. end_date: type: string description: The last date of ingestion. field_filters: type: array description: Filter the scope based on field output values. items: $ref: "#/components/schemas/FieldFilter" description: Payload for triggering an export. FieldFilter: type: object properties: field_name: $ref: "#/components/schemas/CollectorFieldName" condition: $ref: "#/components/schemas/FieldFilterCondition" values: type: array description: The values useful to the filter. items: type: string description: Filtering a column required: - field_name - condition - values FieldFilterCondition: type: string enum: - less_than - greater_than - closed_interval - open_interval - left_closed_interval - right_closed_interval - include - exclude description: The possible field filtering conditions. ExportStatus: type: string enum: - completed - in_progress - failed description: The possible export states. ExportDetails: type: object properties: client_id: $ref: "#/components/schemas/ClientID" status: $ref: "#/components/schemas/ExportStatus" 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 description: Payload for export trigger response. required: - client_id - status