diff --git a/openapi-spec/api-v2-beta.yaml b/openapi-spec/api-v2-beta.yaml index cf5c9de61..251ff8016 100644 --- a/openapi-spec/api-v2-beta.yaml +++ b/openapi-spec/api-v2-beta.yaml @@ -6436,6 +6436,291 @@ paths: description: 'This endpoint requires the following permission(s): charts_metrics:overview:read. This endpoint belongs to the Charts & Metrics domain, which has a default rate limit of 5 requests per minute.' + /projects/{project_id}/charts/{chart_name}: + get: + summary: Get chart data + description: "Returns time-series data for a specific chart.\n\n**Response Structure**\n\ + \nThe response includes:\n- Chart metadata (category, display_name, description)\n\ + - Time boundaries (start_date, end_date, last_computed_at)\n- Data values\ + \ (array of data points)\n- Summary statistics\n- Segment information (when\ + \ segmented)\n\n**Chart Types**\n\nDifferent charts may return data in slightly\ + \ different formats:\n- Standard charts: values as arrays of data points with\ + \ timestamps\n- Cohort charts: values include cohort-specific data structures\n\ + - Segmented charts: include segment information in the response\n\n**Filtering\ + \ and Segmentation**\n\nUse the `/charts/{chart_name}/options` endpoint to\ + \ discover available\nfilters and segments for a specific chart before making\ + \ requests.\n\nFilter parameters vary by chart and can be passed as additional\ + \ query parameters.\n This endpoint requires the following permission(s):\ + \ charts_metrics:charts:read. This endpoint belongs to the Charts\ + \ & Metrics domain, which has a default rate limit of 5 requests\ + \ per minute." + operationId: get-chart-data + x-revenuecat-rate-limiting-domain: charts_metrics + x-scopes: + - charts_metrics:charts:read + x-release-status: public + tags: + - Charts & Metrics + parameters: + - name: project_id + description: ID of the project + required: true + in: path + schema: + type: string + maxLength: 255 + example: proj1ab2c3d4 + - name: chart_name + description: 'Name of the chart to retrieve. + + ' + required: true + in: path + schema: + type: string + maxLength: 255 + enum: + - actives + - actives_movement + - actives_new + - arr + - churn + - cohort_explorer + - conversion_to_paying + - customers_new + - ltv_per_customer + - ltv_per_paying_customer + - mrr + - mrr_movement + - refund_rate + - revenue + - subscription_retention + - subscription_status + - trials + - trials_movement + - trials_new + - customers_active + - trial_conversion_rate + example: revenue + - name: realtime + description: Whether to request real-time (v3) charts. Defaults to true. Set + to false to request the v2 charts. + in: query + schema: + type: boolean + default: true + - name: filters + description: JSON array of chart filters. Each filter is a ChartFilter object. + in: query + schema: + type: string + example: '[{"name":"country","values":["US","UK"]}]' + - name: selectors + description: JSON object of chart selectors. + in: query + schema: + type: string + example: '{"conversion_timeframe":"7_days","revenue_type":"proceeds"}' + - name: currency + description: ISO 4217 currency code + in: query + schema: + type: string + enum: + - USD + - EUR + - GBP + - AUD + - CAD + - JPY + - BRL + - KRW + - CNY + - MXN + - SEK + - PLN + example: EUR + - name: resolution + description: 'Time resolution for the chart data. + + Use the chart options endpoint to discover available resolutions and their + IDs. + + ' + in: query + schema: + type: string + example: '0' + - name: start_date + description: Start date for the data range (ISO 8601 format) + in: query + schema: + type: string + format: date + example: '2024-01-01' + - name: end_date + description: End date for the data range (ISO 8601 format) + in: query + schema: + type: string + format: date + example: '2024-12-31' + - name: segment + description: 'Segment the data by this dimension. Use the chart options endpoint + + to discover available segments for a chart. + + ' + in: query + schema: + type: string + example: country + responses: + '200': + description: Chart data retrieved successfully + content: + application/json: + schema: + $ref: '#/components/schemas/ChartData' + headers: + RevenueCat-Rate-Limit-Current-Usage: + $ref: '#/components/headers/RateLimitCurrentUsage' + RevenueCat-Rate-Limit-Current-Limit: + $ref: '#/components/headers/RateLimitCurrentLimit' + '400': + $ref: '#/components/responses/BadRequest' + '404': + $ref: '#/components/responses/NotFound' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/RateLimited' + '500': + $ref: '#/components/responses/InternalError' + '503': + $ref: '#/components/responses/InternalError' + /projects/{project_id}/charts/{chart_name}/options: + get: + summary: Get available options for a chart + description: 'Returns the available configuration options for a specific chart. + + + Use this endpoint to discover: + + - **Resolutions**: Available time granularities (day, week, month, etc.) + + - **Segments**: Dimensions you can segment the data by (country, store, product, + etc.) + + - **Filters**: Available filters and their possible values + + + The options returned are specific to the chart and may vary based on + + your project''s data and configuration. + + + **Usage** + + + Call this endpoint before requesting chart data to: + + 1. Build dynamic filter UIs + + 2. Validate parameters before making chart data requests + + 3. Discover available dimensions for analysis + + . This endpoint requires the following permission(s): charts_metrics:charts:read. + This endpoint belongs to the Charts & Metrics domain, which + has a default rate limit of 5 requests per minute.' + operationId: get-chart-options + x-revenuecat-rate-limiting-domain: charts_metrics + x-scopes: + - charts_metrics:charts:read + x-release-status: public + tags: + - Charts & Metrics + parameters: + - name: project_id + description: ID of the project + required: true + in: path + schema: + type: string + maxLength: 255 + example: proj1ab2c3d4 + - name: chart_name + description: 'Name of the chart to retrieve. + + ' + required: true + in: path + schema: + type: string + maxLength: 255 + enum: + - actives + - actives_movement + - actives_new + - arr + - churn + - cohort_explorer + - conversion_to_paying + - customers_new + - ltv_per_customer + - ltv_per_paying_customer + - mrr + - mrr_movement + - refund_rate + - revenue + - subscription_retention + - subscription_status + - trials + - trials_movement + - trials_new + - customers_active + - trial_conversion_rate + example: revenue + - name: realtime + description: Whether to request real-time (v3) charts. Defaults to true. Set + to false to request the v2 charts. + in: query + schema: + type: boolean + default: true + responses: + '200': + description: Chart options retrieved successfully + content: + application/json: + schema: + $ref: '#/components/schemas/ChartOptions' + headers: + RevenueCat-Rate-Limit-Current-Usage: + $ref: '#/components/headers/RateLimitCurrentUsage' + RevenueCat-Rate-Limit-Current-Limit: + $ref: '#/components/headers/RateLimitCurrentLimit' + '404': + $ref: '#/components/responses/NotFound' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/RateLimited' + '500': + $ref: '#/components/responses/InternalError' + '503': + $ref: '#/components/responses/InternalError' /projects/{project_id}/subscriptions: get: summary: Search subscriptions by store subscription identifier @@ -6871,6 +7156,275 @@ components: maxLength: 255 example: https://billing.revenuecat.com/app1a2b3c4/sub1ab2c3d4e5?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 additionalProperties: false + ChartData: + type: object + description: Chart data response containing time-series data and metadata + required: + - object + - category + - display_type + - display_name + - description + - resolution + - values + - yaxis + properties: + object: + description: String representing the object's type. Objects of the same + type share the same value. + enum: + - chart_data + type: string + category: + description: Category the chart belongs to + type: string + example: revenue + display_type: + description: Type of chart visualization + type: string + example: line + display_name: + description: Human-readable name of the chart + type: string + example: Revenue + description: + description: Description of what the chart shows + type: string + documentation_link: + description: Link to documentation for this chart + nullable: true + type: string + last_computed_at: + description: Timestamp when the chart data was last computed (ms since epoch) + nullable: true + type: integer + format: int64 + start_date: + description: Start date of the data range (ms since epoch) + nullable: true + type: integer + format: int64 + end_date: + description: End date of the data range (ms since epoch) + nullable: true + type: integer + format: int64 + yaxis_currency: + description: Currency used for monetary values + type: string + example: USD + filtering_allowed: + description: Whether filtering is allowed for this chart + type: boolean + segmenting_allowed: + description: Whether segmentation is allowed for this chart + type: boolean + resolution: + description: Time resolution of the data points + type: string + enum: + - day + - week + - month + - quarter + - year + example: day + values: + description: Chart data points. Structure varies by chart type - can be + arrays of numbers or objects with timestamps and values. + type: array + items: + oneOf: + - type: array + items: + type: number + nullable: true + - type: object + additionalProperties: true + summary: + description: Summary statistics for the chart data + nullable: true + type: object + additionalProperties: true + yaxis: + description: Y-axis configuration including unit + type: string + example: $ + segments: + description: Segment information when data is segmented + nullable: true + type: array + items: + type: object + properties: + id: + type: string + display_name: + type: string + segments_limit: + description: Maximum number of segments returned + nullable: true + type: integer + measures: + description: Measure definitions for the chart (v3 charts) + nullable: true + type: array + items: + type: object + additionalProperties: true + user_selectors: + description: Currently selected values for user-configurable selectors (keyed + by selector name) + nullable: true + type: object + additionalProperties: + type: string + unsupported_params: + description: Parameters that were provided but not supported + nullable: true + type: object + properties: + filters: + type: array + items: + type: string + segment: + type: string + nullable: true + additionalProperties: false + ChartFilterOption: + type: object + description: A filter option for a chart + required: + - id + - display_name + - options + properties: + id: + description: Unique identifier for the filter + type: string + example: country + display_name: + description: Human-readable name for the filter + type: string + example: Country + group_display_name: + description: Group name for organizing filter options + nullable: true + type: string + example: Geography + options: + description: Available values for this filter + type: array + items: + type: object + required: + - id + - display_name + additionalProperties: true + properties: + id: + description: Unique identifier for the option value + type: string + example: US + display_name: + description: Human-readable name for the option value + type: string + example: United States + ChartOptions: + type: object + description: Available options for filtering and segmenting a chart + required: + - object + - resolutions + - segments + - filters + properties: + object: + description: String representing the object's type. Objects of the same + type share the same value. + enum: + - chart_options + type: string + resolutions: + description: Available time resolutions for the chart + type: array + items: + type: object + properties: + id: + type: string + description: Resolution ID to use in requests + display_name: + type: string + description: Human-readable name + required: + - id + - display_name + example: + - id: '0' + display_name: day + - id: '1' + display_name: week + - id: '2' + display_name: month + segments: + description: Available segmentation options + type: array + items: + $ref: '#/components/schemas/ChartSegmentOption' + filters: + description: Available filter options + type: array + items: + $ref: '#/components/schemas/ChartFilterOption' + user_selectors: + description: User-configurable selectors for the chart (keyed by selector + name) + nullable: true + type: object + additionalProperties: + type: object + properties: + default: + type: string + description: Default value for the selector + display_name: + type: string + description: Human-readable name + options: + type: array + items: + type: object + properties: + id: + type: string + display_name: + type: string + required: + - id + - display_name + additionalProperties: false + ChartSegmentOption: + type: object + description: A segmentation option for a chart + required: + - id + - display_name + properties: + id: + description: Unique identifier for the segment option + type: string + example: country + display_name: + description: Human-readable name for the segment option + type: string + example: Country + group_display_name: + description: Group name for organizing segment options + nullable: true + type: string + example: Geography Country: type: string nullable: true diff --git a/openapi-spec/api-v2.yaml b/openapi-spec/api-v2.yaml index 5b5d19268..e1d9488e4 100644 --- a/openapi-spec/api-v2.yaml +++ b/openapi-spec/api-v2.yaml @@ -6269,6 +6269,291 @@ paths: description: 'This endpoint requires the following permission(s): charts_metrics:overview:read. This endpoint belongs to the Charts & Metrics domain, which has a default rate limit of 5 requests per minute.' + /projects/{project_id}/charts/{chart_name}: + get: + summary: Get chart data + description: "Returns time-series data for a specific chart.\n\n**Response Structure**\n\ + \nThe response includes:\n- Chart metadata (category, display_name, description)\n\ + - Time boundaries (start_date, end_date, last_computed_at)\n- Data values\ + \ (array of data points)\n- Summary statistics\n- Segment information (when\ + \ segmented)\n\n**Chart Types**\n\nDifferent charts may return data in slightly\ + \ different formats:\n- Standard charts: values as arrays of data points with\ + \ timestamps\n- Cohort charts: values include cohort-specific data structures\n\ + - Segmented charts: include segment information in the response\n\n**Filtering\ + \ and Segmentation**\n\nUse the `/charts/{chart_name}/options` endpoint to\ + \ discover available\nfilters and segments for a specific chart before making\ + \ requests.\n\nFilter parameters vary by chart and can be passed as additional\ + \ query parameters.\n This endpoint requires the following permission(s):\ + \ charts_metrics:charts:read. This endpoint belongs to the Charts\ + \ & Metrics domain, which has a default rate limit of 5 requests\ + \ per minute." + operationId: get-chart-data + x-revenuecat-rate-limiting-domain: charts_metrics + x-scopes: + - charts_metrics:charts:read + x-release-status: public + tags: + - Charts & Metrics + parameters: + - name: project_id + description: ID of the project + required: true + in: path + schema: + type: string + maxLength: 255 + example: proj1ab2c3d4 + - name: chart_name + description: 'Name of the chart to retrieve. + + ' + required: true + in: path + schema: + type: string + maxLength: 255 + enum: + - actives + - actives_movement + - actives_new + - arr + - churn + - cohort_explorer + - conversion_to_paying + - customers_new + - ltv_per_customer + - ltv_per_paying_customer + - mrr + - mrr_movement + - refund_rate + - revenue + - subscription_retention + - subscription_status + - trials + - trials_movement + - trials_new + - customers_active + - trial_conversion_rate + example: revenue + - name: realtime + description: Whether to request real-time (v3) charts. Defaults to true. Set + to false to request the v2 charts. + in: query + schema: + type: boolean + default: true + - name: filters + description: JSON array of chart filters. Each filter is a ChartFilter object. + in: query + schema: + type: string + example: '[{"name":"country","values":["US","UK"]}]' + - name: selectors + description: JSON object of chart selectors. + in: query + schema: + type: string + example: '{"conversion_timeframe":"7_days","revenue_type":"proceeds"}' + - name: currency + description: ISO 4217 currency code + in: query + schema: + type: string + enum: + - USD + - EUR + - GBP + - AUD + - CAD + - JPY + - BRL + - KRW + - CNY + - MXN + - SEK + - PLN + example: EUR + - name: resolution + description: 'Time resolution for the chart data. + + Use the chart options endpoint to discover available resolutions and their + IDs. + + ' + in: query + schema: + type: string + example: '0' + - name: start_date + description: Start date for the data range (ISO 8601 format) + in: query + schema: + type: string + format: date + example: '2024-01-01' + - name: end_date + description: End date for the data range (ISO 8601 format) + in: query + schema: + type: string + format: date + example: '2024-12-31' + - name: segment + description: 'Segment the data by this dimension. Use the chart options endpoint + + to discover available segments for a chart. + + ' + in: query + schema: + type: string + example: country + responses: + '200': + description: Chart data retrieved successfully + content: + application/json: + schema: + $ref: '#/components/schemas/ChartData' + headers: + RevenueCat-Rate-Limit-Current-Usage: + $ref: '#/components/headers/RateLimitCurrentUsage' + RevenueCat-Rate-Limit-Current-Limit: + $ref: '#/components/headers/RateLimitCurrentLimit' + '400': + $ref: '#/components/responses/BadRequest' + '404': + $ref: '#/components/responses/NotFound' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/RateLimited' + '500': + $ref: '#/components/responses/InternalError' + '503': + $ref: '#/components/responses/InternalError' + /projects/{project_id}/charts/{chart_name}/options: + get: + summary: Get available options for a chart + description: 'Returns the available configuration options for a specific chart. + + + Use this endpoint to discover: + + - **Resolutions**: Available time granularities (day, week, month, etc.) + + - **Segments**: Dimensions you can segment the data by (country, store, product, + etc.) + + - **Filters**: Available filters and their possible values + + + The options returned are specific to the chart and may vary based on + + your project''s data and configuration. + + + **Usage** + + + Call this endpoint before requesting chart data to: + + 1. Build dynamic filter UIs + + 2. Validate parameters before making chart data requests + + 3. Discover available dimensions for analysis + + . This endpoint requires the following permission(s): charts_metrics:charts:read. + This endpoint belongs to the Charts & Metrics domain, which + has a default rate limit of 5 requests per minute.' + operationId: get-chart-options + x-revenuecat-rate-limiting-domain: charts_metrics + x-scopes: + - charts_metrics:charts:read + x-release-status: public + tags: + - Charts & Metrics + parameters: + - name: project_id + description: ID of the project + required: true + in: path + schema: + type: string + maxLength: 255 + example: proj1ab2c3d4 + - name: chart_name + description: 'Name of the chart to retrieve. + + ' + required: true + in: path + schema: + type: string + maxLength: 255 + enum: + - actives + - actives_movement + - actives_new + - arr + - churn + - cohort_explorer + - conversion_to_paying + - customers_new + - ltv_per_customer + - ltv_per_paying_customer + - mrr + - mrr_movement + - refund_rate + - revenue + - subscription_retention + - subscription_status + - trials + - trials_movement + - trials_new + - customers_active + - trial_conversion_rate + example: revenue + - name: realtime + description: Whether to request real-time (v3) charts. Defaults to true. Set + to false to request the v2 charts. + in: query + schema: + type: boolean + default: true + responses: + '200': + description: Chart options retrieved successfully + content: + application/json: + schema: + $ref: '#/components/schemas/ChartOptions' + headers: + RevenueCat-Rate-Limit-Current-Usage: + $ref: '#/components/headers/RateLimitCurrentUsage' + RevenueCat-Rate-Limit-Current-Limit: + $ref: '#/components/headers/RateLimitCurrentLimit' + '404': + $ref: '#/components/responses/NotFound' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/RateLimited' + '500': + $ref: '#/components/responses/InternalError' + '503': + $ref: '#/components/responses/InternalError' /projects/{project_id}/subscriptions: get: summary: Search subscriptions by store subscription identifier @@ -6704,6 +6989,275 @@ components: maxLength: 255 example: https://billing.revenuecat.com/app1a2b3c4/sub1ab2c3d4e5?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 additionalProperties: false + ChartData: + type: object + description: Chart data response containing time-series data and metadata + required: + - object + - category + - display_type + - display_name + - description + - resolution + - values + - yaxis + properties: + object: + description: String representing the object's type. Objects of the same + type share the same value. + enum: + - chart_data + type: string + category: + description: Category the chart belongs to + type: string + example: revenue + display_type: + description: Type of chart visualization + type: string + example: line + display_name: + description: Human-readable name of the chart + type: string + example: Revenue + description: + description: Description of what the chart shows + type: string + documentation_link: + description: Link to documentation for this chart + nullable: true + type: string + last_computed_at: + description: Timestamp when the chart data was last computed (ms since epoch) + nullable: true + type: integer + format: int64 + start_date: + description: Start date of the data range (ms since epoch) + nullable: true + type: integer + format: int64 + end_date: + description: End date of the data range (ms since epoch) + nullable: true + type: integer + format: int64 + yaxis_currency: + description: Currency used for monetary values + type: string + example: USD + filtering_allowed: + description: Whether filtering is allowed for this chart + type: boolean + segmenting_allowed: + description: Whether segmentation is allowed for this chart + type: boolean + resolution: + description: Time resolution of the data points + type: string + enum: + - day + - week + - month + - quarter + - year + example: day + values: + description: Chart data points. Structure varies by chart type - can be + arrays of numbers or objects with timestamps and values. + type: array + items: + oneOf: + - type: array + items: + type: number + nullable: true + - type: object + additionalProperties: true + summary: + description: Summary statistics for the chart data + nullable: true + type: object + additionalProperties: true + yaxis: + description: Y-axis configuration including unit + type: string + example: $ + segments: + description: Segment information when data is segmented + nullable: true + type: array + items: + type: object + properties: + id: + type: string + display_name: + type: string + segments_limit: + description: Maximum number of segments returned + nullable: true + type: integer + measures: + description: Measure definitions for the chart (v3 charts) + nullable: true + type: array + items: + type: object + additionalProperties: true + user_selectors: + description: Currently selected values for user-configurable selectors (keyed + by selector name) + nullable: true + type: object + additionalProperties: + type: string + unsupported_params: + description: Parameters that were provided but not supported + nullable: true + type: object + properties: + filters: + type: array + items: + type: string + segment: + type: string + nullable: true + additionalProperties: false + ChartFilterOption: + type: object + description: A filter option for a chart + required: + - id + - display_name + - options + properties: + id: + description: Unique identifier for the filter + type: string + example: country + display_name: + description: Human-readable name for the filter + type: string + example: Country + group_display_name: + description: Group name for organizing filter options + nullable: true + type: string + example: Geography + options: + description: Available values for this filter + type: array + items: + type: object + required: + - id + - display_name + additionalProperties: true + properties: + id: + description: Unique identifier for the option value + type: string + example: US + display_name: + description: Human-readable name for the option value + type: string + example: United States + ChartOptions: + type: object + description: Available options for filtering and segmenting a chart + required: + - object + - resolutions + - segments + - filters + properties: + object: + description: String representing the object's type. Objects of the same + type share the same value. + enum: + - chart_options + type: string + resolutions: + description: Available time resolutions for the chart + type: array + items: + type: object + properties: + id: + type: string + description: Resolution ID to use in requests + display_name: + type: string + description: Human-readable name + required: + - id + - display_name + example: + - id: '0' + display_name: day + - id: '1' + display_name: week + - id: '2' + display_name: month + segments: + description: Available segmentation options + type: array + items: + $ref: '#/components/schemas/ChartSegmentOption' + filters: + description: Available filter options + type: array + items: + $ref: '#/components/schemas/ChartFilterOption' + user_selectors: + description: User-configurable selectors for the chart (keyed by selector + name) + nullable: true + type: object + additionalProperties: + type: object + properties: + default: + type: string + description: Default value for the selector + display_name: + type: string + description: Human-readable name + options: + type: array + items: + type: object + properties: + id: + type: string + display_name: + type: string + required: + - id + - display_name + additionalProperties: false + ChartSegmentOption: + type: object + description: A segmentation option for a chart + required: + - id + - display_name + properties: + id: + description: Unique identifier for the segment option + type: string + example: country + display_name: + description: Human-readable name for the segment option + type: string + example: Country + group_display_name: + description: Group name for organizing segment options + nullable: true + type: string + example: Geography Country: type: string nullable: true