ctlsurf Reports API
The reports API from ctlsurf — 6 operation(s) for reports.
The reports API from ctlsurf — 6 operation(s) for reports.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/ctlsurf-com:ctlsurf-com-reports-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Ctlsurf Com Reports API
version: 0.1.0
description: 'Operations tagged reports across 2 of this provider''s published API definitions: ctlsurf-com-openapi.json, ctlsurf-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://app.ctlsurf.com
description: ctlsurf application host (documented MCP endpoint https://app.ctlsurf.com/api/mcp; spec served at /openapi.json)
tags:
- name: Reports
paths:
/api/reports/organizations:
get:
tags:
- Reports
summary: List Reporting Organizations
operationId: list_reporting_organizations_api_reports_organizations_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ReportingOrganization'
type: array
title: Response List Reporting Organizations Api Reports Organizations Get
security:
- HTTPBearer: []
/api/reports/organizations/{org_id}:
get:
tags:
- Reports
summary: Organization Contribution Report
description: Member contributions and tracked time in an owner's or admin's organization.
operationId: organization_contribution_report_api_reports_organizations__org_id__get
security:
- HTTPBearer: []
parameters:
- name: org_id
in: path
required: true
schema:
type: string
format: uuid
title: Org Id
- name: start
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Start
- name: end
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: End
- name: member_id
in: query
required: false
schema:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Member Id
- name: folder_id
in: query
required: false
schema:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Folder Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationContributionReport'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/reports/time-tracking:
get:
tags:
- Reports
summary: Time Tracking Report
description: 'Aggregate active time across each project''s ''Time Tracking'' datastore.
Rows are read from `datastore_rows` belonging to a `datastore` block titled
''Time Tracking'' on an ''Agent Datastore'' dataspace page in a non-archived
folder owned by the requesting user.'
operationId: time_tracking_report_api_reports_time_tracking_get
security:
- HTTPBearer: []
parameters:
- name: start
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
description: Inclusive lower bound on row created_at
title: Start
description: Inclusive lower bound on row created_at
- name: end
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
description: Exclusive upper bound on row created_at
title: End
description: Exclusive upper bound on row created_at
- name: folder_id
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
format: uuid
- type: 'null'
description: Filter by one or more folder ids
title: Folder Id
description: Filter by one or more folder ids
- name: group_by
in: query
required: false
schema:
type: string
pattern: ^(folder|day|folder_day)$
default: folder
title: Group By
- name: tz
in: query
required: false
schema:
type: string
description: IANA timezone for day bucketing (e.g. 'America/Los_Angeles'). Defaults to UTC.
default: UTC
title: Tz
description: IANA timezone for day bucketing (e.g. 'America/Los_Angeles'). Defaults to UTC.
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/reports/tickets:
get:
tags:
- Reports
summary: Tickets Report
description: 'List every ticket across the user''s projects.
Tickets live in a per-project `Tickets` datastore block (created by
ctlsurf-worker) on the project''s `Agent Datastore` dataspace page. Each row
is one ticket; values are keyed by column id (col_X), so we map ids back to
names via the block''s `props.columns`.'
operationId: tickets_report_api_reports_tickets_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- HTTPBearer: []
/api/reports/provenance:
get:
tags:
- Reports
summary: Provenance Report
description: Provenance report for a project and period, as JSON.
operationId: provenance_report_api_reports_provenance_get
security:
- HTTPBearer: []
parameters:
- name: folder_id
in: query
required: true
schema:
type: string
format: uuid
description: Project (folder) to report on
title: Folder Id
description: Project (folder) to report on
- name: start
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
description: Inclusive lower bound
title: Start
description: Inclusive lower bound
- name: end
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
description: Exclusive upper bound
title: End
description: Exclusive upper bound
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/reports/provenance/pdf:
get:
tags:
- Reports
summary: Provenance Report Pdf
description: Provenance report rendered as a client-shareable PDF.
operationId: provenance_report_pdf_api_reports_provenance_pdf_get
security:
- HTTPBearer: []
parameters:
- name: folder_id
in: query
required: true
schema:
type: string
format: uuid
title: Folder Id
- name: start
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Start
- name: end
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: End
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
ContributionMetrics:
properties:
total_minutes:
type: number
title: Total Minutes
default: 0
session_count:
type: integer
title: Session Count
default: 0
contribution_count:
type: integer
title: Contribution Count
default: 0
tasks_created:
type: integer
title: Tasks Created
default: 0
tasks_completed:
type: integer
title: Tasks Completed
default: 0
notes_added:
type: integer
title: Notes Added
default: 0
human_contributions:
type: integer
title: Human Contributions
default: 0
agent_contributions:
type: integer
title: Agent Contributions
default: 0
last_active_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Last Active At
type: object
title: ContributionMetrics
ReportingOrganization:
properties:
id:
type: string
format: uuid
title: Id
name:
type: string
title: Name
role:
type: string
title: Role
type: object
required:
- id
- name
- role
title: ReportingOrganization
ReportingMember:
properties:
user_id:
type: string
format: uuid
title: User Id
email:
type: string
title: Email
role:
type: string
title: Role
seat_status:
type: string
title: Seat Status
type: object
required:
- user_id
- email
- role
- seat_status
title: ReportingMember
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
ReportingProject:
properties:
id:
type: string
format: uuid
title: Id
name:
type: string
title: Name
type: object
required:
- id
- name
title: ReportingProject
MemberContributions:
properties:
total_minutes:
type: number
title: Total Minutes
default: 0
session_count:
type: integer
title: Session Count
default: 0
contribution_count:
type: integer
title: Contribution Count
default: 0
tasks_created:
type: integer
title: Tasks Created
default: 0
tasks_completed:
type: integer
title: Tasks Completed
default: 0
notes_added:
type: integer
title: Notes Added
default: 0
human_contributions:
type: integer
title: Human Contributions
default: 0
agent_contributions:
type: integer
title: Agent Contributions
default: 0
last_active_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Last Active At
user_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: User Id
email:
anyOf:
- type: string
- type: 'null'
title: Email
role:
anyOf:
- type: string
- type: 'null'
title: Role
seat_status:
anyOf:
- type: string
- type: 'null'
title: Seat Status
type: object
title: MemberContributions
OrganizationContributionReport:
properties:
organization:
$ref: '#/components/schemas/ReportingOrganization'
period:
$ref: '#/components/schemas/ReportingPeriod'
members:
items:
$ref: '#/components/schemas/ReportingMember'
type: array
title: Members
projects:
items:
$ref: '#/components/schemas/ReportingProject'
type: array
title: Projects
rows:
items:
$ref: '#/components/schemas/MemberContributions'
type: array
title: Rows
totals:
$ref: '#/components/schemas/ContributionMetrics'
type: object
required:
- organization
- period
- members
- projects
- rows
- totals
title: OrganizationContributionReport
ReportingPeriod:
properties:
start:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Start
end:
anyOf:
- type: string
format: date-time
- type: 'null'
title: End
type: object
title: ReportingPeriod
securitySchemes:
HTTPBearer:
type: http
scheme: bearer
x-refined-from:
- ctlsurf-com-openapi.json
- ctlsurf-com-openapi.yml