openapi: 3.0.1 info: description: 'Consumer-to-Extole integration endpoints: consumer event submission, zone rendering, profile management, and SDK-backing operations for browser and native app environments.' title: Integration API - Consumer to Extole Audiences File Validation Monitors API version: '1.0' servers: - description: Production url: https://{brand}.extole.io variables: brand: default: yourcompany description: Your Extole client subdomain (e.g. 'mycompany' for mycompany.extole.io) security: - HEADER: [] - QUERY: [] - COOKIE: [] tags: - name: File Validation Monitors paths: /v6/jobs: get: description: Returns all file validation monitor jobs configured for the client. operationId: listJobs responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/JobResponse' type: array description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: List jobs tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible post: description: Creates a file validation monitor job. Optional triggers and tasks may be supplied in the same request. operationId: createJob requestBody: content: application/json: example: enabled: true name: name tasks: - expected_headers: - expected_header match_mode: EXACT_SET on_mismatch: FAIL order: 1 task_type: FILE_HEADER_VALIDATOR triggers: - match_type: EXACT pattern: pattern trigger_type: FILE_NAME_MATCHES schema: $ref: '#/components/schemas/JobRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' file_header_validator_expected_headers_required: $ref: '#/components/examples/file_header_validator_expected_headers_required' file_header_validator_match_mode_required: $ref: '#/components/examples/file_header_validator_match_mode_required' file_header_validator_on_mismatch_required: $ref: '#/components/examples/file_header_validator_on_mismatch_required' file_name_matches_match_type_required: $ref: '#/components/examples/file_name_matches_match_type_required' file_name_matches_pattern_invalid_regex: $ref: '#/components/examples/file_name_matches_pattern_invalid_regex' file_name_matches_pattern_required: $ref: '#/components/examples/file_name_matches_pattern_required' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' job_name_duplicated: $ref: '#/components/examples/job_name_duplicated' job_name_required: $ref: '#/components/examples/job_name_required' job_name_too_long: $ref: '#/components/examples/job_name_too_long' job_no_tasks: $ref: '#/components/examples/job_no_tasks' job_no_triggers: $ref: '#/components/examples/job_no_triggers' lands_in_directory_path_required: $ref: '#/components/examples/lands_in_directory_path_required' missing_request_body: $ref: '#/components/examples/missing_request_body' start_batch_job_data_source_type_required: $ref: '#/components/examples/start_batch_job_data_source_type_required' start_batch_job_event_name_required: $ref: '#/components/examples/start_batch_job_event_name_required' task_order_out_of_range: $ref: '#/components/examples/task_order_out_of_range' task_type_mismatch: $ref: '#/components/examples/task_type_mismatch' task_type_required: $ref: '#/components/examples/task_type_required' task_validation_failed: $ref: '#/components/examples/task_validation_failed' trigger_type_mismatch: $ref: '#/components/examples/trigger_type_mismatch' trigger_type_required: $ref: '#/components/examples/trigger_type_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Create a job tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible /v6/jobs/{jobId}: get: description: Returns the job for the specified id, including its triggers and tasks. operationId: getJob parameters: - in: path name: jobId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Get a job tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible put: description: Updates top-level job fields. JobTrigger and task changes use the sub-endpoints. operationId: updateJob parameters: - in: path name: jobId required: true schema: type: string requestBody: content: application/json: example: enabled: true name: name tasks: - expected_headers: - expected_header match_mode: EXACT_SET on_mismatch: FAIL order: 1 task_type: FILE_HEADER_VALIDATOR triggers: - match_type: EXACT pattern: pattern trigger_type: FILE_NAME_MATCHES schema: $ref: '#/components/schemas/JobRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' job_name_duplicated: $ref: '#/components/examples/job_name_duplicated' job_name_required: $ref: '#/components/examples/job_name_required' job_name_too_long: $ref: '#/components/examples/job_name_too_long' job_no_tasks: $ref: '#/components/examples/job_no_tasks' job_no_triggers: $ref: '#/components/examples/job_no_triggers' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Update a job tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible delete: description: Soft-deletes the job and cascades soft-delete to its triggers and tasks. operationId: deleteJob parameters: - in: path name: jobId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' task_order_out_of_range: $ref: '#/components/examples/task_order_out_of_range' task_type_mismatch: $ref: '#/components/examples/task_type_mismatch' trigger_type_mismatch: $ref: '#/components/examples/trigger_type_mismatch' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Delete a job tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible /v6/jobs/{jobId}/tasks: get: description: Returns all tasks for the specified job, sorted by order. operationId: listTasks parameters: - in: path name: jobId required: true schema: type: string responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/TaskResponse' type: array description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: List tasks tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible post: description: Adds a task to the specified job. Order defaults to max+1 when omitted. operationId: addTask parameters: - in: path name: jobId required: true schema: type: string requestBody: content: application/json: example: expected_headers: - expected_header match_mode: EXACT_SET on_mismatch: FAIL order: 1 task_type: FILE_HEADER_VALIDATOR schema: $ref: '#/components/schemas/TaskRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TaskResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' file_header_validator_expected_headers_required: $ref: '#/components/examples/file_header_validator_expected_headers_required' file_header_validator_match_mode_required: $ref: '#/components/examples/file_header_validator_match_mode_required' file_header_validator_on_mismatch_required: $ref: '#/components/examples/file_header_validator_on_mismatch_required' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' start_batch_job_data_source_type_required: $ref: '#/components/examples/start_batch_job_data_source_type_required' start_batch_job_event_name_required: $ref: '#/components/examples/start_batch_job_event_name_required' task_order_out_of_range: $ref: '#/components/examples/task_order_out_of_range' task_type_mismatch: $ref: '#/components/examples/task_type_mismatch' task_type_required: $ref: '#/components/examples/task_type_required' task_validation_failed: $ref: '#/components/examples/task_validation_failed' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Add a task tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible /v6/jobs/{jobId}/tasks/{taskId}: get: description: Returns the task for the specified id. operationId: getTask parameters: - in: path name: jobId required: true schema: type: string - in: path name: taskId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/TaskResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' task_order_out_of_range: $ref: '#/components/examples/task_order_out_of_range' task_type_mismatch: $ref: '#/components/examples/task_type_mismatch' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Get a task tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible put: description: Updates the task. The request task type must match the stored task. operationId: updateTask parameters: - in: path name: jobId required: true schema: type: string - in: path name: taskId required: true schema: type: string requestBody: content: application/json: example: expected_headers: - expected_header match_mode: EXACT_SET on_mismatch: FAIL order: 1 task_type: FILE_HEADER_VALIDATOR schema: $ref: '#/components/schemas/TaskRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TaskResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' file_header_validator_expected_headers_required: $ref: '#/components/examples/file_header_validator_expected_headers_required' file_header_validator_match_mode_required: $ref: '#/components/examples/file_header_validator_match_mode_required' file_header_validator_on_mismatch_required: $ref: '#/components/examples/file_header_validator_on_mismatch_required' invalid_json: $ref: '#/components/examples/invalid_json' invalid_null: $ref: '#/components/examples/invalid_null' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' start_batch_job_data_source_type_required: $ref: '#/components/examples/start_batch_job_data_source_type_required' start_batch_job_event_name_required: $ref: '#/components/examples/start_batch_job_event_name_required' task_order_out_of_range: $ref: '#/components/examples/task_order_out_of_range' task_type_mismatch: $ref: '#/components/examples/task_type_mismatch' task_type_required: $ref: '#/components/examples/task_type_required' task_validation_failed: $ref: '#/components/examples/task_validation_failed' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Update a task tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible delete: description: Soft-deletes the task and compacts remaining order values. operationId: deleteTask parameters: - in: path name: jobId required: true schema: type: string - in: path name: taskId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/TaskResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' task_order_out_of_range: $ref: '#/components/examples/task_order_out_of_range' task_type_mismatch: $ref: '#/components/examples/task_type_mismatch' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Delete a task tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible /v6/jobs/{jobId}/triggers: get: description: Returns all triggers for the specified job. operationId: listTriggers parameters: - in: path name: jobId required: true schema: type: string responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/TriggerResponse' type: array description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: List triggers tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible post: description: Adds a trigger to the specified job. operationId: addTrigger parameters: - in: path name: jobId required: true schema: type: string requestBody: content: application/json: example: match_type: EXACT pattern: pattern trigger_type: FILE_NAME_MATCHES schema: $ref: '#/components/schemas/TriggerRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TriggerResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' file_name_matches_match_type_required: $ref: '#/components/examples/file_name_matches_match_type_required' file_name_matches_pattern_invalid_regex: $ref: '#/components/examples/file_name_matches_pattern_invalid_regex' file_name_matches_pattern_required: $ref: '#/components/examples/file_name_matches_pattern_required' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' lands_in_directory_path_required: $ref: '#/components/examples/lands_in_directory_path_required' missing_request_body: $ref: '#/components/examples/missing_request_body' trigger_type_mismatch: $ref: '#/components/examples/trigger_type_mismatch' trigger_type_required: $ref: '#/components/examples/trigger_type_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Add a trigger tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible /v6/jobs/{jobId}/triggers/{triggerId}: get: description: Returns the trigger for the specified id. operationId: getTrigger parameters: - in: path name: jobId required: true schema: type: string - in: path name: triggerId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/TriggerResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' trigger_type_mismatch: $ref: '#/components/examples/trigger_type_mismatch' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Get a trigger tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible put: description: Updates the trigger. The request trigger type must match the stored trigger. operationId: updateTrigger parameters: - in: path name: jobId required: true schema: type: string - in: path name: triggerId required: true schema: type: string requestBody: content: application/json: example: match_type: EXACT pattern: pattern trigger_type: FILE_NAME_MATCHES schema: $ref: '#/components/schemas/TriggerRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TriggerResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' file_name_matches_match_type_required: $ref: '#/components/examples/file_name_matches_match_type_required' file_name_matches_pattern_invalid_regex: $ref: '#/components/examples/file_name_matches_pattern_invalid_regex' file_name_matches_pattern_required: $ref: '#/components/examples/file_name_matches_pattern_required' invalid_json: $ref: '#/components/examples/invalid_json' invalid_null: $ref: '#/components/examples/invalid_null' invalid_parameter: $ref: '#/components/examples/invalid_parameter' lands_in_directory_path_required: $ref: '#/components/examples/lands_in_directory_path_required' missing_request_body: $ref: '#/components/examples/missing_request_body' trigger_type_mismatch: $ref: '#/components/examples/trigger_type_mismatch' trigger_type_required: $ref: '#/components/examples/trigger_type_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Update a trigger tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible delete: description: Soft-deletes the trigger. operationId: deleteTrigger parameters: - in: path name: jobId required: true schema: type: string - in: path name: triggerId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/TriggerResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' trigger_type_mismatch: $ref: '#/components/examples/trigger_type_mismatch' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Delete a trigger tags: - File Validation Monitors x-extole-bundle: management x-extole-visibility: visible components: examples: invalid_json: summary: invalid_json value: code: invalid_json http_status_code: 400 message: JSON is invalid parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 start_batch_job_event_name_required: summary: start_batch_job_event_name_required value: code: start_batch_job_event_name_required http_status_code: 400 message: Start batch job task requires an event name parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 task_order_out_of_range: summary: task_order_out_of_range value: code: task_order_out_of_range http_status_code: 400 message: Task order is out of range parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 job_no_triggers: summary: job_no_triggers value: code: job_no_triggers http_status_code: 400 message: An enabled job requires at least one trigger parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 job_no_tasks: summary: job_no_tasks value: code: job_no_tasks http_status_code: 400 message: An enabled job requires at least one task parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 job_name_duplicated: summary: job_name_duplicated value: code: job_name_duplicated http_status_code: 400 message: A job with this name already exists for the client parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 task_type_required: summary: task_type_required value: code: task_type_required http_status_code: 400 message: Task type is required parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 missing_access_token: summary: missing_access_token value: code: missing_access_token http_status_code: 403 message: No access_token was provided with this request. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 payment_required: summary: payment_required value: code: payment_required http_status_code: 402 message: The access_token provided is associated with an unpaid account. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 file_name_matches_match_type_required: summary: file_name_matches_match_type_required value: code: file_name_matches_match_type_required http_status_code: 400 message: File name matches trigger requires a match type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_null: summary: invalid_null value: code: invalid_null http_status_code: 400 message: The attribute may be omitted but not nullified parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 method_unauthorized: summary: method_unauthorized value: code: method_unauthorized http_status_code: 401 message: Unauthorized access to this endpoint parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 unsupported_media_type: summary: unsupported_media_type value: code: unsupported_media_type http_status_code: 415 message: Request had an unsupported or no media type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 lands_in_directory_path_required: summary: lands_in_directory_path_required value: code: lands_in_directory_path_required http_status_code: 400 message: Lands in directory trigger requires a directory path parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 job_name_too_long: summary: job_name_too_long value: code: job_name_too_long http_status_code: 400 message: Job name exceeds the maximum length of 255 characters parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 missing_request_body: summary: missing_request_body value: code: missing_request_body http_status_code: 400 message: Missing request body parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 task_type_mismatch: summary: task_type_mismatch value: code: task_type_mismatch http_status_code: 400 message: Task type does not match the stored task parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 start_batch_job_data_source_type_required: summary: start_batch_job_data_source_type_required value: code: start_batch_job_data_source_type_required http_status_code: 400 message: Start batch job task requires a data source type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 binding_error: summary: binding_error value: code: binding_error http_status_code: 400 message: Argument is not of the expected type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 trigger_type_required: summary: trigger_type_required value: code: trigger_type_required http_status_code: 400 message: Trigger type is required parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 access_denied: summary: access_denied value: code: access_denied http_status_code: 403 message: The access_token provided is not permitted to access the specified resource. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 trigger_type_mismatch: summary: trigger_type_mismatch value: code: trigger_type_mismatch http_status_code: 400 message: Trigger type does not match the stored trigger parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 file_name_matches_pattern_required: summary: file_name_matches_pattern_required value: code: file_name_matches_pattern_required http_status_code: 400 message: File name matches trigger requires a pattern parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 file_header_validator_expected_headers_required: summary: file_header_validator_expected_headers_required value: code: file_header_validator_expected_headers_required http_status_code: 400 message: File header validator task requires expected headers parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 too_many_requests: summary: too_many_requests value: code: too_many_requests http_status_code: 429 message: The server is unable to process your request at the moment, please retry later. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_parameter: summary: invalid_parameter value: code: invalid_parameter http_status_code: 400 message: Parameter is invalid. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 file_name_matches_pattern_invalid_regex: summary: file_name_matches_pattern_invalid_regex value: code: file_name_matches_pattern_invalid_regex http_status_code: 400 message: File name matches trigger pattern is not a valid regular expression parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 task_validation_failed: summary: task_validation_failed value: code: task_validation_failed http_status_code: 400 message: Task validation failed parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 file_header_validator_match_mode_required: summary: file_header_validator_match_mode_required value: code: file_header_validator_match_mode_required http_status_code: 400 message: File header validator task requires a match mode parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 job_name_required: summary: job_name_required value: code: job_name_required http_status_code: 400 message: Job name is required parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 file_header_validator_on_mismatch_required: summary: file_header_validator_on_mismatch_required value: code: file_header_validator_on_mismatch_required http_status_code: 400 message: File header validator task requires an on-mismatch action parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 schemas: JobRequest: properties: enabled: type: boolean name: type: string tasks: items: $ref: '#/components/schemas/TaskRequest' type: array triggers: items: $ref: '#/components/schemas/TriggerRequest' type: array required: - tasks - triggers type: object FileHeaderValidatorTaskRequest: allOf: - $ref: '#/components/schemas/TaskRequestBase' - properties: expected_headers: items: type: string type: array match_mode: enum: - EXACT_SET - ORDERED - SUBSET type: string on_mismatch: enum: - FAIL - WARN type: string task_type: enum: - FILE_HEADER_VALIDATOR type: string type: object required: - expected_headers - match_mode - on_mismatch - order - task_type type: object LandsInDirectoryTriggerResponse: allOf: - $ref: '#/components/schemas/TriggerResponseBase' - properties: directory_path: type: string id: readOnly: true type: string trigger_type: enum: - LANDS_IN_DIRECTORY type: string type: object required: - directory_path - id - trigger_type type: object JobResponse: properties: client_id: type: string created_date: $ref: '#/components/schemas/ZonedDateTime' enabled: type: boolean id: readOnly: true type: string name: type: string tasks: items: $ref: '#/components/schemas/TaskResponse' type: array triggers: items: $ref: '#/components/schemas/TriggerResponse' type: array updated_date: $ref: '#/components/schemas/ZonedDateTime' required: - client_id - created_date - enabled - id - name - tasks - triggers - updated_date type: object LandsInDirectoryTriggerRequest: allOf: - $ref: '#/components/schemas/TriggerRequestBase' - properties: directory_path: type: string trigger_type: enum: - LANDS_IN_DIRECTORY type: string type: object required: - directory_path - trigger_type type: object FileHeaderValidatorTaskResponse: allOf: - $ref: '#/components/schemas/TaskResponseBase' - properties: expected_headers: items: type: string type: array id: readOnly: true type: string match_mode: enum: - EXACT_SET - ORDERED - SUBSET type: string on_mismatch: enum: - FAIL - WARN type: string task_type: enum: - FILE_HEADER_VALIDATOR type: string type: object required: - expected_headers - id - match_mode - on_mismatch - order - task_type type: object TaskRequest: discriminator: mapping: FILE_HEADER_VALIDATOR: '#/components/schemas/FileHeaderValidatorTaskRequest' START_BATCH_JOB: '#/components/schemas/StartBatchJobTaskRequest' propertyName: task_type oneOf: - $ref: '#/components/schemas/FileHeaderValidatorTaskRequest' - $ref: '#/components/schemas/StartBatchJobTaskRequest' required: - order - task_type FileNameMatchesTriggerRequest: allOf: - $ref: '#/components/schemas/TriggerRequestBase' - properties: match_type: enum: - EXACT - REGEX type: string pattern: type: string trigger_type: enum: - FILE_NAME_MATCHES type: string type: object required: - match_type - pattern - trigger_type type: object TriggerRequest: discriminator: mapping: FILE_NAME_MATCHES: '#/components/schemas/FileNameMatchesTriggerRequest' LANDS_IN_DIRECTORY: '#/components/schemas/LandsInDirectoryTriggerRequest' propertyName: trigger_type oneOf: - $ref: '#/components/schemas/FileNameMatchesTriggerRequest' - $ref: '#/components/schemas/LandsInDirectoryTriggerRequest' required: - trigger_type TaskResponse: discriminator: mapping: FILE_HEADER_VALIDATOR: '#/components/schemas/FileHeaderValidatorTaskResponse' START_BATCH_JOB: '#/components/schemas/StartBatchJobTaskResponse' propertyName: task_type oneOf: - $ref: '#/components/schemas/FileHeaderValidatorTaskResponse' - $ref: '#/components/schemas/StartBatchJobTaskResponse' required: - id - order - task_type TaskRequestBase: properties: order: format: int32 type: integer task_type: enum: - FILE_HEADER_VALIDATOR - START_BATCH_JOB type: string type: object StartBatchJobTaskResponse: allOf: - $ref: '#/components/schemas/TaskResponseBase' - properties: data_source_type: enum: - AUDIENCE_LIST - FILE_ASSET - REPORT type: string event_name: type: string id: readOnly: true type: string task_type: enum: - START_BATCH_JOB type: string type: object required: - data_source_type - event_name - id - order - task_type type: object StartBatchJobTaskRequest: allOf: - $ref: '#/components/schemas/TaskRequestBase' - properties: data_source_type: enum: - AUDIENCE_LIST - FILE_ASSET - REPORT type: string event_name: type: string task_type: enum: - START_BATCH_JOB type: string type: object required: - data_source_type - event_name - order - task_type type: object TriggerResponse: discriminator: mapping: FILE_NAME_MATCHES: '#/components/schemas/FileNameMatchesTriggerResponse' LANDS_IN_DIRECTORY: '#/components/schemas/LandsInDirectoryTriggerResponse' propertyName: trigger_type oneOf: - $ref: '#/components/schemas/FileNameMatchesTriggerResponse' - $ref: '#/components/schemas/LandsInDirectoryTriggerResponse' required: - id - trigger_type TaskResponseBase: properties: id: readOnly: true type: string order: format: int32 type: integer task_type: enum: - FILE_HEADER_VALIDATOR - START_BATCH_JOB type: string type: object FileNameMatchesTriggerResponse: allOf: - $ref: '#/components/schemas/TriggerResponseBase' - properties: id: readOnly: true type: string match_type: enum: - EXACT - REGEX type: string pattern: type: string trigger_type: enum: - FILE_NAME_MATCHES type: string type: object required: - id - match_type - pattern - trigger_type type: object TriggerRequestBase: properties: trigger_type: enum: - FILE_NAME_MATCHES - LANDS_IN_DIRECTORY type: string type: object RestExceptionResponse: description: Represents the API error response properties: code: description: Specific error code for this error type, documented per endpoint type: string http_status_code: description: HTTP status code that was returned with this error, useful if client get response code format: int32 type: integer message: description: User readable English description of the error type: string parameters: additionalProperties: description: Attributes related to the error, varies be error code, documented per endpoint type: object description: Attributes related to the error, varies be error code, documented per endpoint type: object unique_id: description: Unique id associated with this error, useful for discussions with Extole type: string required: - code - http_status_code - message - parameters - unique_id type: object ZonedDateTime: description: '[RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) or [RFC 9557](https://datatracker.ietf.org/doc/html/rfc9557#section-4) date-time with a numeric [UTC offset](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and an optional [IANA time-zone](https://datatracker.ietf.org/doc/html/rfc9557#section-4) suffix in square brackets. Precision up to milliseconds.' example: '2025-10-24T02:00:00-07:00' pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])(\[[^\]]+\])?$ type: string TriggerResponseBase: properties: id: readOnly: true type: string trigger_type: enum: - FILE_NAME_MATCHES - LANDS_IN_DIRECTORY type: string type: object securitySchemes: COOKIE: in: cookie name: extole_token type: apiKey HEADER: in: header name: Authorization type: apiKey x-bearer-format: bearer QUERY: in: query name: access_token type: apiKey x-tagGroups: - name: Integration API - Consumer to Extole tags: - Authentication - Content - Email - Events - Persons - Profile Assets - Profiles