Files
query-orchestration/serviceAPIs/queryService.yaml
T
Michael McGuinness c78ca26a6f Merged in feature/export (pull request #91)
export

* export
2025-03-05 19:37:06 +00:00

792 lines
20 KiB
YAML

---
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: JobService
description: Operations related to jobs
- name: JobCollectorService
description: Operations related to job collectors
- name: JobDocumentsService
description: Operations related to job 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:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ClientCreate"
responses:
"201":
description: Client created successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/IdMessage"
"400":
description: Invalid request body.
/client/{id}:
parameters:
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: The ID of the client to retrieve.
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/JobClient"
"400":
description: Invalid request parameters.
patch:
operationId: updateClient
tags:
- ClientService
summary: Update a client
description: Updates an existing client with new details.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ClientUpdate"
responses:
"200":
description: Client updated successfully.
"400":
description: Invalid request body.
/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":
description: Invalid request parameters.
post:
operationId: createQuery
tags:
- QueryService
summary: Create a new query
description: Creates a new query with the provided details.
requestBody:
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":
description: Invalid request body.
/query/{id}:
parameters:
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: The ID of the query.
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":
description: Invalid request parameters.
patch:
operationId: updateQuery
tags:
- QueryService
summary: Update a query
description: Updates an existing query with new details.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/QueryUpdate"
responses:
"200":
description: Query updated successfully.
"400":
description: Invalid request body.
/query/{id}/test:
parameters:
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: The ID of the query.
post:
operationId: testQuery
tags:
- QueryService
summary: Test a query
description: Executes a test run of a query with the provided parameters.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/QueryTestRequest"
responses:
"200":
description: Test result.
content:
application/json:
schema:
$ref: "#/components/schemas/QueryTestResponse"
"400":
description: Invalid request body.
/job:
post:
operationId: createJob
tags:
- JobService
summary: Create a new job
description: Creates a new job with the provided details.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/JobCreate"
responses:
"201":
description: Job created successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/IdMessage"
"400":
description: Invalid request body.
/job/{id}:
parameters:
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: The job ID.
get:
operationId: getJob
tags:
- JobService
summary: Get a job by ID
description: Retrieves a specific job by its ID.
responses:
"200":
description: Job details.
content:
application/json:
schema:
$ref: "#/components/schemas/Job"
"400":
description: Invalid request parameters.
patch:
operationId: updateJob
tags:
- JobService
summary: Update a job
description: Updates an existing job with new details.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/JobUpdate"
responses:
"204":
description: Job updated successfully.
"400":
description: Invalid request body.
/job/{id}/status:
parameters:
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: The job ID for the collector.
get:
operationId: getJobStatusByJobId
tags:
- JobCollectorService
summary: Get job status by job ID
description: Retrieves the job status by its job ID.
responses:
"200":
description: Job status details.
content:
application/json:
schema:
$ref: "#/components/schemas/JobStatusBody"
"400":
description: Invalid request parameters.
/job/{id}/collector:
parameters:
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: The job ID for the collector.
get:
operationId: getJobCollectorByJobId
tags:
- JobCollectorService
summary: Get a job collector by ID
description: Retrieves a specific job collector by its ID.
responses:
"200":
description: Job collector details.
content:
application/json:
schema:
$ref: "#/components/schemas/JobCollector"
"400":
description: Invalid body.
patch:
operationId: updateJobCollectorByJobId
tags:
- JobCollectorService
summary: Update a job collector
description: Updates an existing job collector with new details.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/JobCollectorUpdate"
responses:
"204":
description: Job collector updated successfully.
"400":
description: Invalid request body.
/job/{id}/documents:
parameters:
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: The job ID for the documents.
get:
operationId: listDocumentsByJobId
tags:
- JobDocumentsService
summary: List the documents for a job
description: Retrieves the list of documents by the job ID.
responses:
"200":
description: Job documents list.
content:
application/json:
schema:
$ref: "#/components/schemas/ListDocuments"
"400":
description: Invalid request body.
/job/{id}/export:
parameters:
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: The ID of the export.
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":
description: Invalid body.
post:
operationId: triggerExport
tags:
- ExportService
summary: Trigger an export
description: Initiates the export process.
requestBody:
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":
description: Invalid request body.
components:
schemas:
QueryType:
type: string
enum:
- JSON_EXTRACTOR
- CONTEXT_FULL
description: Specifies the type of the query.
Query:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier for the query.
type:
$ref: "#/components/schemas/QueryType"
active_version:
type: integer
format: int32
description: The active version of the query.
latest_version:
type: integer
format: int32
description: The latest version of the query.
config:
type: string
description: Configuration for the query.
required_queries:
type: array
items:
type: string
format: uuid
description: List of required query IDs.
required:
- id
- type
- active_version
- latest_version
ListQueries:
type: object
properties:
queries:
type: array
items:
$ref: "#/components/schemas/Query"
description: List of queries.
required:
- queries
QueryCreate:
type: object
properties:
type:
$ref: "#/components/schemas/QueryType"
config:
type: string
description: Configuration for the new query.
required_queries:
type: array
items:
type: string
format: uuid
description: List of required query IDs.
required:
- type
QueryUpdate:
type: object
properties:
config:
type: string
description: Updated configuration for the query.
active_version:
type: integer
format: int32
description: Updated active version.
required_queries:
type: array
items:
type: string
format: uuid
description: Updated list of required query IDs.
QueryTestRequest:
type: object
properties:
document_id:
type: string
format: uuid
description: ID of the document to test against.
query_version:
type: integer
format: int32
description: Version of the query to use for testing.
required:
- document_id
- query_version
QueryTestResponse:
type: object
properties:
value:
type: string
description: Result of the query test.
required:
- value
JobClient:
type: object
properties:
id:
type: string
format: uuid
description: The client id
name:
type: string
description: The client name
can_sync:
type: boolean
description: If the client is allowing active syncs
required:
- id
- name
- can_sync
JobStatus:
type: string
enum:
- IN_SYNC
- NOT_SYNCED
description: Specifies the status of a job.
Job:
type: object
properties:
id:
type: string
format: uuid
description: The job id
client_id:
type: string
format: uuid
description: The client id the job belongs to
can_sync:
type: boolean
description: Specifies whether the job is actively syncing
required:
- id
- client_id
- can_sync
JobStatusBody:
type: object
properties:
job_id:
type: string
format: uuid
description: The job id
status:
$ref: "#/components/schemas/JobStatus"
required:
- job_id
- status
JobCreate:
type: object
properties:
client_id:
type: string
format: uuid
description: The client id the job belongs to
required:
- client_id
JobUpdate:
type: object
properties:
can_sync:
type: boolean
description: Specifies whether the job is actively syncing
ListDocuments:
type: array
description: The documents in the job.
items:
$ref: "#/components/schemas/Document"
Document:
type: object
properties:
id:
type: string
format: uuid
description: The document id
bucket:
type: string
description: The bucket containing the document
key:
type: string
description: The path to the document
required:
- id
- bucket
- key
ClientCreate:
type: object
properties:
name:
type: string
description: The client name
required:
- name
ClientUpdate:
type: object
properties:
name:
type: string
description: The client name
can_sync:
type: boolean
description: If the client is allowing active syncs
IdMessage:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier for entity.
required:
- id
JobCollector:
type: object
properties:
job_id:
type: string
format: uuid
description: The ID of the associated job.
active_version:
type: integer
format: int32
description: The active version of the collector.
latest_version:
type: integer
format: int32
description: The latest version of the collector.
minimum_cleaner_version:
type: integer
format: int32
description: The minimum version for the document cleaner.
minimum_text_version:
type: integer
format: int32
description: The minimum version for the text parser.
fields:
type: array
description: The fields in the job collector.
items:
$ref: "#/components/schemas/JobCollectorField"
description: JobCollector model.
required:
- job_id
- fields
- minimum_cleaner_version
- minimum_text_version
- latest_version
- active_version
JobCollectorUpdate:
type: object
properties:
minimum_cleaner_version:
type: integer
format: int32
description: The minimum version for the document cleaner.
minimum_text_version:
type: integer
format: int32
description: The minimum version for the text parser.
active_version:
type: integer
format: int32
description: The active version of the collector.
fields:
type: array
description: The fields in the job collector.
items:
$ref: "#/components/schemas/JobCollectorField"
description: Payload for updating a JobCollector.
JobCollectorField:
type: object
description: The field properties for the job collector.
properties:
name:
type: string
description: The output field name.
query_id:
type: string
format: uuid
description: The query id that will populate the result.
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:
type: string
description: The name of the field in question.
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 job states.
ExportDetails:
type: object
properties:
job_id:
type: string
format: uuid
description: The job id relative to the export.
status:
$ref: "#/components/schemas/ExportStatus"
output_location:
type: string
description: The location in which the export zip file will be found.
example: s3://{bucket}/{clientid}/{jobid}/{timestamp}_{exportid}.zip
description: Payload for export trigger response.
required:
- job_id
- status