Extole Reporting API
The Reporting API from Extole — 7 operation(s) for reporting.
The Reporting API from Extole — 7 operation(s) for reporting.
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 Reporting 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: Reporting
paths:
/v4/reports/latest:
get:
operationId: readLatestReport
parameters:
- in: query
name: tags
schema:
nullable: true
type: string
- in: query
name: exclude_tags
schema:
nullable: true
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ReportResponse'
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'
report_content_not_found:
$ref: '#/components/examples/report_content_not_found'
report_content_not_supported:
$ref: '#/components/examples/report_content_not_supported'
report_not_found:
$ref: '#/components/examples/report_not_found'
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
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
expired_access_token:
$ref: '#/components/examples/expired_access_token'
invalid_access_token:
$ref: '#/components/examples/invalid_access_token'
jwt_authentication_error:
$ref: '#/components/examples/jwt_authentication_error'
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
tags:
- Reporting
x-extole-bundle: integration-consumer-to-extole
x-extole-visibility: expert
/v4/reports/latest/download{format}:
get:
operationId: downloadLatestReport
parameters:
- in: header
name: Content-Type
schema:
type: string
- in: query
name: tags
schema:
nullable: true
type: string
- in: query
name: exclude_tags
schema:
nullable: true
type: string
- in: path
name: format
required: true
schema:
pattern: (\.csv|\.json|\.jsonl|\.xlsx|\.psv|\.headless_csv|\.headless_psv)?
type: string
responses:
'200':
content:
'*/*': {}
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'
report_content_not_found:
$ref: '#/components/examples/report_content_not_found'
report_content_not_supported:
$ref: '#/components/examples/report_content_not_supported'
report_not_found:
$ref: '#/components/examples/report_not_found'
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
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
expired_access_token:
$ref: '#/components/examples/expired_access_token'
invalid_access_token:
$ref: '#/components/examples/invalid_access_token'
jwt_authentication_error:
$ref: '#/components/examples/jwt_authentication_error'
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
tags:
- Reporting
x-extole-bundle: integration-consumer-to-extole
x-extole-visibility: expert
/v4/reports/{reportId}:
get:
operationId: readReport
parameters:
- in: path
name: reportId
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ReportResponse'
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'
report_content_not_found:
$ref: '#/components/examples/report_content_not_found'
report_content_not_supported:
$ref: '#/components/examples/report_content_not_supported'
report_not_found:
$ref: '#/components/examples/report_not_found'
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
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
expired_access_token:
$ref: '#/components/examples/expired_access_token'
invalid_access_token:
$ref: '#/components/examples/invalid_access_token'
jwt_authentication_error:
$ref: '#/components/examples/jwt_authentication_error'
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
tags:
- Reporting
x-extole-bundle: integration-consumer-to-extole
x-extole-visibility: expert
/v4/reports/{reportId}/download{format}:
get:
operationId: downloadReport
parameters:
- in: header
name: Content-Type
schema:
type: string
- in: path
name: reportId
required: true
schema:
type: string
- in: path
name: format
required: true
schema:
pattern: (\.csv|\.json|\.jsonl|\.xlsx|\.psv|\.headless_csv|\.headless_psv)?
type: string
responses:
'200':
content:
'*/*': {}
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'
report_content_not_found:
$ref: '#/components/examples/report_content_not_found'
report_content_not_supported:
$ref: '#/components/examples/report_content_not_supported'
report_not_found:
$ref: '#/components/examples/report_not_found'
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
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
expired_access_token:
$ref: '#/components/examples/expired_access_token'
invalid_access_token:
$ref: '#/components/examples/invalid_access_token'
jwt_authentication_error:
$ref: '#/components/examples/jwt_authentication_error'
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
tags:
- Reporting
x-extole-bundle: integration-consumer-to-extole
x-extole-visibility: expert
/v4/reports/{reportId}/info/{format}:
get:
operationId: getReportInfo
parameters:
- in: path
name: reportId
required: true
schema:
type: string
- in: path
name: format
required: true
schema:
pattern: (csv|json|jsonl|xlsx|psv|headless_csv|headless_psv)
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FormatReportInfoResponse'
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'
report_content_not_found:
$ref: '#/components/examples/report_content_not_found'
report_content_not_supported:
$ref: '#/components/examples/report_content_not_supported'
report_not_found:
$ref: '#/components/examples/report_not_found'
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
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
expired_access_token:
$ref: '#/components/examples/expired_access_token'
invalid_access_token:
$ref: '#/components/examples/invalid_access_token'
jwt_authentication_error:
$ref: '#/components/examples/jwt_authentication_error'
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
tags:
- Reporting
x-extole-bundle: integration-consumer-to-extole
x-extole-visibility: expert
/v6/dimensions:
get:
operationId: getSummaryDimensions
parameters:
- in: query
name: campaign_id
schema:
type: string
- in: query
name: program_label
schema:
type: string
- in: query
name: container
schema:
type: string
- in: query
name: step_name
schema:
type: string
responses:
'200':
content:
application/json:
schema:
items:
items:
type: string
type: array
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_limit:
$ref: '#/components/examples/invalid_limit'
invalid_offset:
$ref: '#/components/examples/invalid_offset'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
max_fetch_size_1000:
$ref: '#/components/examples/max_fetch_size_1000'
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 dimension combinations.
tags:
- Reporting
x-extole-bundle: management-expert
x-extole-visibility: expert
/v6/dimensions/{dimensionName}:
get:
operationId: getDimensionStats
parameters:
- in: path
name: dimensionName
required: true
schema:
type: string
- in: query
name: campaign_id
schema:
type: string
- in: query
name: program_label
schema:
type: string
- in: query
name: container
schema:
type: string
- in: query
name: time_period
schema:
enum:
- MONTHISH
- NONE
- YEAR
type: string
- in: query
name: limit
schema:
format: int32
type: integer
- in: query
name: offset
schema:
format: int32
type: integer
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/DimensionStatsResponse'
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_limit:
$ref: '#/components/examples/invalid_limit'
invalid_offset:
$ref: '#/components/examples/invalid_offset'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
max_fetch_size_1000:
$ref: '#/components/examples/max_fetch_size_1000'
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 dimension values.
tags:
- Reporting
x-extole-bundle: management-expert
x-extole-visibility: expert
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
expired_access_token:
summary: expired_access_token
value:
code: expired_access_token
http_status_code: 403
message: The access_token provided with this request has expired.
parameters: {}
unique_id: 00000000-0000-0000-0000-000000000000
report_not_found:
summary: report_not_found
value:
code: report_not_found
http_status_code: 400
message: Report not found
parameters: {}
unique_id: 00000000-0000-0000-0000-000000000000
invalid_offset:
summary: invalid_offset
value:
code: invalid_offset
http_status_code: 400
message: Offset should be a non negative integer
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
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
jwt_authentication_error:
summary: jwt_authentication_error
value:
code: jwt_authentication_error
http_status_code: 403
message: The jwt authentication failed.
parameters: {}
unique_id: 00000000-0000-0000-0000-000000000000
report_content_not_supported:
summary: report_content_not_supported
value:
code: report_content_not_supported
http_status_code: 400
message: Report content type not supported
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
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
report_content_not_found:
summary: report_content_not_found
value:
code: report_content_not_found
http_status_code: 400
message: Report content exceed max size
parameters: {}
unique_id: 00000000-0000-0000-0000-000000000000
invalid_access_token:
summary: invalid_access_token
value:
code: invalid_access_token
http_status_code: 403
message: The access_token provided with this request is invalid.
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
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
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
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
invalid_limit:
summary: invalid_limit
value:
code: invalid_limit
http_status_code: 400
message: Limit should be a non negative integer
parameters: {}
unique_id: 00000000-0000-0000-0000-000000000000
max_fetch_size_1000:
summary: max_fetch_size_1000
value:
code: max_fetch_size_1000
http_status_code: 400
message: Maximum allowed difference between limit and offset should be 1000
parameters: {}
unique_id: 00000000-0000-0000-0000-000000000000
schemas:
FormatReportInfoResponse:
properties:
content_length:
format: int64
type: integer
total_rows:
format: int64
type: integer
required:
- content_length
- total_rows
type: object
ReportResponse:
properties:
completed_date:
nullable: true
type: string
display_name:
type: string
download_uri:
nullable: true
type: string
formats:
items:
enum:
- CSV
- HEADLESS_CSV
- HEADLESS_PSV
- JSON
- JSONL
- PSV
- XLSX
type: string
type: array
name:
type: string
report_id:
type: string
report_type:
type: string
tags:
items:
type: string
type: array
uniqueItems: true
required:
- completed_date
- display_name
- download_uri
- formats
- name
- report_id
- report_type
- tags
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
DimensionStatsResponse:
properties:
count:
format: int64
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/extole/refs/heads/main/openapi/extole-reporting-api-openapi.yml