openapi: 3.0.3 info: title: CaptivateIQ Attribute Worksheets Data Worksheets API version: v1 description: The CaptivateIQ REST API (ciq/v1) for managing employees, hierarchies, data worksheets, commission plans, payouts, reports, and related sales-compensation resources. Harvested from the public developer reference (developers.captivateiq.com). x-apievangelist-provenance: generated: '2026-07-18' method: searched source: https://developers.captivateiq.com/reference (per-operation OpenAPI defs merged) servers: - url: https://api.captivateiq.com description: Production security: - tokenAuth: [] tags: - name: Data Worksheets paths: /ciq/v1/data-worksheets/: get: operationId: data_worksheets_list summary: List Data Worksheets parameters: - in: query name: data_workbook_ids[] schema: type: string format: uuid description: Filter by data workbook UUIDs explode: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: name_contains schema: type: string description: Case-insensitive search to list data workbooks whose names contain the given string. - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: 'Optional. Which field to use when ordering the results. By default we assume [`name`]. Available fields for ordering: [`(-)name`]. See the [FAQs](https://developers.captivateiq.com/docs/faqs) page for tips.' schema: type: string - in: query name: type schema: type: string description: Filter by worksheet type. Valid choices are `raw` or `derived`. tags: - Data Worksheets security: - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDataWorksheetList' description: '' /ciq/v1/data-worksheets/{id}/: get: operationId: data_worksheets_retrieve summary: Get Data Worksheet parameters: - in: path name: id schema: type: string format: uuid description: Primary key, a UUID. required: true tags: - Data Worksheets security: - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/DataWorksheet' description: '' /ciq/v1/data-worksheets/{worksheet_uuid}/records/: post: operationId: data_worksheets_records_create summary: Create Record parameters: - in: path name: worksheet_uuid schema: type: string format: uuid description: Worksheet UUID. required: true tags: - Data Worksheets requestBody: content: application/json: schema: type: object additionalProperties: {} application/x-www-form-urlencoded: schema: type: object additionalProperties: {} multipart/form-data: schema: type: object additionalProperties: {} security: - tokenAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/Record' description: '' get: operationId: data_worksheets_records_list description: 'This endpoint returns only the raw data values present in the worksheet. If you experience performance issues, or want to also see derived values, please use the [Bulk Export Records](https://developers.captivateiq.com/reference/data_worksheets_records_export_create-1) endpoint instead.' summary: List Records parameters: - in: query name: created_at_after schema: type: string format: date description: Filter by created_at dates after a date, inclusive of that date. YYYY-MM-DD format. - in: query name: created_at_before schema: type: string format: date description: Filter by created_at dates before a date. YYYY-MM-DD format. - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: 'Optional. Which field to use when ordering the results. By default we assume [`created_at`]. Available fields for ordering: [`(-)created_at`, `(-)updated_at`]. Also accepts column name or UUIDs. For worksheets that are bulk upserted it is recommended to use the worksheet Unique ID name or UUID to avoid duplicates.' schema: type: string - in: query name: query schema: type: string description: Perform a case-insensitive text search over record data for the given string. - in: query name: query_column schema: type: string description: When provided along with query, search only within the specified column name instead of searching all columns. - in: query name: updated_at_after schema: type: string format: date description: Filter by updated_at dates after a date, inclusive of that date. YYYY-MM-DD format. - in: query name: updated_at_before schema: type: string format: date description: Filter by updated_at dates before a date. YYYY-MM-DD format. - in: path name: worksheet_uuid schema: type: string format: uuid description: Worksheet UUID. required: true tags: - Data Worksheets security: - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRecordList' description: '' /ciq/v1/data-worksheets/{worksheet_uuid}/records/batch/: post: operationId: data_worksheets_records_batch_create summary: Batch Update Records parameters: - in: path name: worksheet_uuid schema: type: string format: uuid description: Worksheet UUID. required: true tags: - Data Worksheets requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchUpdateRecords' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BatchUpdateRecords' multipart/form-data: schema: $ref: '#/components/schemas/BatchUpdateRecords' required: true security: - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BatchResult' description: '' /ciq/v1/data-worksheets/{worksheet_uuid}/records/export/: post: operationId: data_worksheets_records_export_create description: 'Export all records as a downloadable CSV file for the given data worksheet. This exports both data and derived columns.' summary: Bulk Export Records parameters: - in: query name: export_format schema: type: string enum: - csv - json default: csv description: Format for the records export. - in: path name: worksheet_uuid schema: type: string format: uuid description: Worksheet UUID. required: true tags: - Data Worksheets security: - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Job' description: '' /ciq/v1/data-worksheets/{worksheet_uuid}/records/import/: post: operationId: data_worksheets_records_import_create description: 'While the CSV file format is not fully standardized, CaptivateIQ''s implementation of CSV parsing will have you surround a field''s data with quotation marks in order to allow for commas that may be present in the data. For example: ``` Column1,Column2 "Foo, bar",baz ```' summary: Bulk Import Records parameters: - in: path name: worksheet_uuid schema: type: string format: uuid description: Worksheet UUID. required: true tags: - Data Worksheets requestBody: content: application/json: schema: $ref: '#/components/schemas/DataWorksheetImportCSVRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DataWorksheetImportCSVRequest' multipart/form-data: schema: $ref: '#/components/schemas/DataWorksheetImportCSVRequest' required: true security: - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Upload' description: '' /ciq/v1/data-worksheets/{worksheet_uuid}/records/import/template/: get: operationId: data_worksheets_records_import_template_retrieve summary: Get Bulk Import Records Template parameters: - in: path name: worksheet_uuid schema: type: string format: uuid description: Worksheet UUID. required: true tags: - Data Worksheets security: - tokenAuth: [] responses: '200': content: application/json: schema: type: string description: '' /ciq/v1/data-worksheets/{worksheet_uuid}/records/{unique_id}/: delete: operationId: data_worksheets_records_destroy summary: Delete Record parameters: - in: path name: unique_id schema: type: string description: The unique ID column value of a record within the worksheet `worksheet_uuid`. required: true - in: path name: worksheet_uuid schema: type: string format: uuid description: Worksheet UUID. required: true tags: - Data Worksheets security: - tokenAuth: [] responses: '204': description: No response body get: operationId: data_worksheets_records_retrieve summary: Get Record parameters: - in: path name: unique_id schema: type: string description: The unique ID column value of a record within the worksheet `worksheet_uuid`. required: true - in: path name: worksheet_uuid schema: type: string format: uuid description: Worksheet UUID. required: true tags: - Data Worksheets security: - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Record' description: '' put: operationId: data_worksheets_records_update summary: Update Record parameters: - in: path name: unique_id schema: type: string description: The unique ID column value of a record within the worksheet `worksheet_uuid`. required: true - in: path name: worksheet_uuid schema: type: string format: uuid description: Worksheet UUID. required: true tags: - Data Worksheets requestBody: content: application/json: schema: type: object additionalProperties: {} application/x-www-form-urlencoded: schema: type: object additionalProperties: {} multipart/form-data: schema: type: object additionalProperties: {} security: - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Record' description: '' components: schemas: BatchUpdateRecords: type: object properties: upserts: type: array items: type: object additionalProperties: {} description: Records to create or update. Maximum batch size is 1000. maxItems: 1000 deletes: type: array items: type: string description: Unique IDs for the records to delete. Maximum batch size is 1000. maxItems: 1000 required: - deletes - upserts Job: type: object properties: object: type: string readOnly: true default: job description: Optional. Object type name. id: type: string readOnly: true description: Primary key, a UUID. url: type: string readOnly: true description: URL to retrieve job details and status. type: type: string nullable: true readOnly: true description: Job type. status: type: string readOnly: true description: 'Job status, one of: PENDING, RECEIVED, STARTED, SUCCESS, FAILURE, REVOKED, REJECTED, RETRY or IGNORED' description: type: string nullable: true readOnly: true description: Detailed job description. details: type: object additionalProperties: {} readOnly: true description: Specific details about this job, such as error messages or download links. metadata: $ref: '#/components/schemas/JobMetadata' required: - metadata DelimiterEnum: enum: - ',' - \t - '|' - ; type: string ImportModeEnum: enum: - upsert - insert_only - delete - overwrite type: string PaginatedRecordList: type: object properties: object: type: string example: list total_count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 data: type: array items: $ref: '#/components/schemas/Record' BatchResult: type: object properties: created: type: array items: type: string description: Unique IDs of the created records. updated: type: array items: type: string description: Unique IDs of the updated records. deleted: type: array items: type: string description: Unique IDs of the deleted records. required: - created - deleted - updated DateFormatEnum: enum: - MM_DD_YYYY - DD_MM_YYYY - YYYY_MM_DD type: string JobMetadata: type: object properties: user_id: type: string format: uuid readOnly: true description: ID for the User who created this job. user_email: type: string format: uuid readOnly: true description: Email for the User who created this job. created_at: type: string format: date-time readOnly: true description: Date and time of creation. updated_at: type: string format: date-time readOnly: true description: Date and time of last update. aggregation_id: type: string format: uuid readOnly: true description: ID by which multiple jobs may be grouped together. ObjectTypeEnum: enum: - records - test_records - object_model_records - hierarchies - hierarchies_api - employee_assumptions - employee_visibility - sfdc_report_metadata - quota_worksheets - unified_employee_assumptions - people - unified_worksheet_records - records_api - dispute_attachment - docusign_file - organization_logo - attributes - picklist_options - plan_document - plan_document_template - bulk_plan_document_index_template - spm_worksheet type: string DataWorksheet: type: object properties: object: type: string readOnly: true default: data_worksheet description: Optional. Object type name. id: type: string readOnly: true description: Primary key, a UUID. type: type: string readOnly: true description: Worksheet type. name: type: string description: Worksheet name. description: type: string description: Worksheet description. workbook: type: string format: uuid readOnly: true description: Worksheet's associated data workbook UUID. workbook_name: type: string readOnly: true description: Worksheet's associated data workbook name. columns: type: array items: $ref: '#/components/schemas/ColumnListItem' readOnly: true description: Worksheet columns. created_at: type: string format: date-time readOnly: true description: Date and time of creation. updated_at: type: string format: date-time readOnly: true description: Date and time of last update. required: - description - name Record: type: object properties: object: type: string readOnly: true default: record description: Optional. Object type name. id: type: string readOnly: true description: Primary key, a UUID. created_at: type: string format: date-time readOnly: true description: Date and time of creation. updated_at: type: string format: date-time readOnly: true description: Date and time of last update. data: type: object additionalProperties: {} description: Column data for the record. required: - data ColumnListItem: type: object properties: object: type: string readOnly: true default: column description: Optional. Object type name. id: type: string readOnly: true description: Primary key, a UUID. name: type: string description: Column name. description: type: string description: Column description. variant: type: string description: Column variant, e.g. raw or derived. data_type: type: string description: Column data type, e.g. number or date. format: description: Column display format. formula: type: string readOnly: true description: Column formula. read_only: type: boolean readOnly: true description: Whether or not the column is read only. created_at: type: string format: date-time readOnly: true description: Date and time of creation. updated_at: type: string format: date-time readOnly: true description: Date and time of last update. required: - data_type - description - format - name - variant DataWorksheetImportParams: type: object properties: import_mode: allOf: - $ref: '#/components/schemas/ImportModeEnum' description: 'Mode for our import. Valid choices are: `upsert`, `insert_only`, `overwrite` and `delete`.' data_mappings: type: object additionalProperties: type: string description: 'Dictionary that optionally maps `{ "CaptivateIQ Column Name": "CSV Header" }`. By default we try to do an exact match with column name, but will use the provided mappings if names differ.' load_all_columns: type: boolean default: true description: Whether to load columns that are not specified in the data mappings. If false, only columns specified in data mappings will be loaded, and the rest will be ignored. If true, we will attempt to load all columns, using data mappings for columns that are mapped and column names for columns that are not mapped. required: - data_mappings - import_mode PaginatedDataWorksheetList: type: object properties: object: type: string example: list total_count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 data: type: array items: $ref: '#/components/schemas/DataWorksheet' Upload: type: object properties: object: type: string readOnly: true default: upload description: Optional. Object type name. id: type: string readOnly: true description: Primary key, a UUID. url: type: string readOnly: true description: URL to retrieve upload details and status. object_type: allOf: - $ref: '#/components/schemas/ObjectTypeEnum' readOnly: true description: Upload type. file_name: type: string description: File name including extension, e.g. "my-file.csv". encoding: type: string description: The file's encoding, e.g. "utf-8". date_format: allOf: - $ref: '#/components/schemas/DateFormatEnum' description: The file's format for all date fields delimiter: allOf: - $ref: '#/components/schemas/DelimiterEnum' description: The file's delimiter status: type: string readOnly: true description: Upload status, whether or not it has been processed. params: readOnly: true description: Upload parameters. details: type: object additionalProperties: {} readOnly: true description: Upload details, such as a presigned url if it's pending processing, or job details if it's processed. created_at: type: string format: date-time readOnly: true description: Date and time of creation. updated_at: type: string format: date-time readOnly: true description: Date and time of last update. required: - date_format - delimiter - encoding - file_name DataWorksheetImportCSVRequest: type: object properties: file_name: type: string description: File name for the uploaded file, e.g. `my-file.csv`. We currently only support CSV files. pattern: \.csv$ encoding: type: string description: Optional. The file's encoding, by default we assume `utf-8`, `utf-16` or `iso-8859-1`. See [here](https://docs.python.org/3.8/library/codecs.html#standard-encodings) for the full list of supported encodings. date_format: allOf: - $ref: '#/components/schemas/DateFormatEnum' description: 'Optional. The file''s format for all date fields, by default we assume the organization''s `Default Input Date Format` setting. Valid choices are: `MM_DD_YYYY`, `DD_MM_YYYY`, and `YYYY_MM_DD`.' delimiter: allOf: - $ref: '#/components/schemas/DelimiterEnum' description: 'Optional. The file''s delimiter, by default we assume `,`. Valid choices are: `,`, `\t`, `|` and `;`.' params: allOf: - $ref: '#/components/schemas/DataWorksheetImportParams' description: Parameters for the data worksheet upload. required: - file_name - params securitySchemes: tokenAuth: type: apiKey in: header name: Authorization description: Token-based authentication with required prefix "Token"