From c8509856eac30ad5b1113ae6a72036788ba691d2 Mon Sep 17 00:00:00 2001 From: Brian Byrne Date: Thu, 17 Apr 2025 13:12:41 -0700 Subject: [PATCH 01/22] chore: Update OpenAPI specs --- fern/apis/beta/openapi-beta.yaml | 2115 +++++++++++++++++++++++++- fern/apis/public/openapi-public.yaml | 267 +++- 2 files changed, 2366 insertions(+), 16 deletions(-) diff --git a/fern/apis/beta/openapi-beta.yaml b/fern/apis/beta/openapi-beta.yaml index 4e96d951..01e014f4 100644 --- a/fern/apis/beta/openapi-beta.yaml +++ b/fern/apis/beta/openapi-beta.yaml @@ -2217,6 +2217,7 @@ components: incident: '#/components/schemas/incident' issue: '#/components/schemas/issue' link: '#/components/schemas/link' + linkable: '#/components/schemas/linkable' meeting: '#/components/schemas/meeting' object_member: '#/components/schemas/object-member' opportunity: '#/components/schemas/opportunity' @@ -2224,6 +2225,7 @@ components: question_answer: '#/components/schemas/question-answer' rev_org: '#/components/schemas/rev-org' rev_user: '#/components/schemas/rev-user' + runnable: '#/components/schemas/runnable' service_account: '#/components/schemas/service-account' sla: '#/components/schemas/sla' sla_tracker: '#/components/schemas/sla-tracker' @@ -2261,6 +2263,7 @@ components: - $ref: '#/components/schemas/incident' - $ref: '#/components/schemas/issue' - $ref: '#/components/schemas/link' + - $ref: '#/components/schemas/linkable' - $ref: '#/components/schemas/meeting' - $ref: '#/components/schemas/object-member' - $ref: '#/components/schemas/opportunity' @@ -2268,6 +2271,7 @@ components: - $ref: '#/components/schemas/question-answer' - $ref: '#/components/schemas/rev-org' - $ref: '#/components/schemas/rev-user' + - $ref: '#/components/schemas/runnable' - $ref: '#/components/schemas/service-account' - $ref: '#/components/schemas/sla' - $ref: '#/components/schemas/sla-tracker' @@ -2355,6 +2359,7 @@ components: incident: '#/components/schemas/incident-summary' issue: '#/components/schemas/issue-summary' link: '#/components/schemas/link-summary' + linkable: '#/components/schemas/linkable-summary' meeting: '#/components/schemas/meeting-summary' object_member: '#/components/schemas/object-member-summary' opportunity: '#/components/schemas/opportunity-summary' @@ -2362,6 +2367,7 @@ components: question_answer: '#/components/schemas/question-answer-summary' rev_org: '#/components/schemas/rev-org-summary' rev_user: '#/components/schemas/rev-user-summary' + runnable: '#/components/schemas/runnable-summary' service_account: '#/components/schemas/service-account-summary' sla: '#/components/schemas/sla-summary' sla_tracker: '#/components/schemas/sla-tracker-summary' @@ -2399,6 +2405,7 @@ components: - $ref: '#/components/schemas/incident-summary' - $ref: '#/components/schemas/issue-summary' - $ref: '#/components/schemas/link-summary' + - $ref: '#/components/schemas/linkable-summary' - $ref: '#/components/schemas/meeting-summary' - $ref: '#/components/schemas/object-member-summary' - $ref: '#/components/schemas/opportunity-summary' @@ -2406,6 +2413,7 @@ components: - $ref: '#/components/schemas/question-answer-summary' - $ref: '#/components/schemas/rev-org-summary' - $ref: '#/components/schemas/rev-user-summary' + - $ref: '#/components/schemas/runnable-summary' - $ref: '#/components/schemas/service-account-summary' - $ref: '#/components/schemas/sla-summary' - $ref: '#/components/schemas/sla-tracker-summary' @@ -2450,6 +2458,7 @@ components: - incident - issue - link + - linkable - meeting - object_member - opportunity @@ -2457,6 +2466,7 @@ components: - question_answer - rev_org - rev_user + - runnable - service_account - sla - sla_tracker @@ -3252,6 +3262,84 @@ components: type: boolean description: Manually set presence to away. title: availability-preferences-group + bar-visualization-x-axis: + type: object + description: The X-axis for a bar visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: bar-visualization-x-axis + bar-visualization-y-axis: + type: object + description: The Y-axis for a bar visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: bar-visualization-y-axis + bar-widget-visualization: + type: object + description: | + A bar chart visualization configuration. Includes metadata specific to + bar charts. + properties: + is_stacked: + type: boolean + description: Whether the bar should be stacked. + scrollbar: + $ref: '#/components/schemas/visualization-scrollbar' + show_data_labels: + type: boolean + description: Whether to show data labels. + x: + type: array + description: The configuration for the X-axis. + items: + $ref: '#/components/schemas/bar-visualization-x-axis' + "y": + type: array + description: The configuration for the Y-axes. + items: + $ref: '#/components/schemas/bar-visualization-y-axis' + required: + - x + - "y" + title: bar-widget-visualization boolean-expression: type: object description: Boolean expression. @@ -3903,6 +3991,84 @@ components: - code_change title: code-changes-update-response x-go-name: CodeChangesUpdateResponseBody + column-visualization-x-axis: + type: object + description: The X-axis for a column visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: column-visualization-x-axis + column-visualization-y-axis: + type: object + description: The Y-axis for a column visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: column-visualization-y-axis + column-widget-visualization: + type: object + description: | + A column chart visualization configuration. Includes metadata specific + to column charts. + properties: + is_stacked: + type: boolean + description: Whether the columns should be stacked. + scrollbar: + $ref: '#/components/schemas/visualization-scrollbar' + show_data_labels: + type: boolean + description: Whether to show data labels. + x: + type: array + description: The configuration for the X-axis. + items: + $ref: '#/components/schemas/column-visualization-x-axis' + "y": + type: array + description: The configuration for the Y-axes. + items: + $ref: '#/components/schemas/column-visualization-y-axis' + required: + - x + - "y" + title: column-widget-visualization command: allOf: - $ref: '#/components/schemas/atom-base' @@ -5630,6 +5796,26 @@ components: - $ref: '#/components/schemas/vista-base-summary' description: Static collection of Devrev objects. title: curated-vista-summary + custom-field-widget-column-projection: + type: object + description: A custom field widget column projection. + properties: + leaf_type: + type: string + description: The leaf type of the custom field. + format: text + name: + type: string + description: The name of the custom field. + format: text + subtype: + type: string + description: The subtype of the custom field. + format: text + required: + - leaf_type + - name + title: custom-field-widget-column-projection custom-link-type: allOf: - $ref: '#/components/schemas/atom-base' @@ -6891,6 +7077,13 @@ components: allOf: - $ref: '#/components/schemas/atom-base' title: dashboard + dashboard-filter: + type: object + additionalProperties: false + description: | + A dashboard filter is a filter that can be applied to tabs, sections, + and widgets. + title: dashboard-filter dashboard-search-summary: allOf: - $ref: '#/components/schemas/search-summary-base' @@ -6905,6 +7098,13 @@ components: allOf: - $ref: '#/components/schemas/atom-base-summary' title: dashboard-summary + data-source-join: + type: object + additionalProperties: false + description: | + A list of possible joins for the data source. Follows foreign key + semantics. + title: data-source-join date-filter: type: object description: Provides ways to specify date ranges on objects. @@ -8283,6 +8483,73 @@ components: required: - users title: dm-summary + donut-visualization-x-axis: + type: object + description: The X-axis for a donut visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: donut-visualization-x-axis + donut-visualization-y-axis: + type: object + description: The Y-axis for a donut visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: donut-visualization-y-axis + donut-widget-visualization: + type: object + description: | + A donut chart visualization configuration. Includes metadata specific + to donut charts. + properties: + x: + type: array + description: The configuration for the X-axis. + items: + $ref: '#/components/schemas/donut-visualization-x-axis' + "y": + $ref: '#/components/schemas/donut-visualization-y-axis' + required: + - x + - "y" + title: donut-widget-visualization dynamic-group-info: type: object additionalProperties: false @@ -8401,6 +8668,25 @@ components: - reply_to - to title: email-preview-widget + embed-links-create-request: + type: object + description: | + The request to create a new link embedded inside another create + request. + properties: + link_type: + $ref: '#/components/schemas/link-type' + source: + type: string + description: The ID of the source object. + format: id + target: + type: string + description: The ID of the target object. + format: id + required: + - link_type + title: embed-links-create-request empty: type: object additionalProperties: false @@ -9720,8 +10006,8 @@ components: enum: - error - message + - message_generation_started - progress - - started client_metadata: type: object description: | @@ -9733,6 +10019,8 @@ components: description: | The final response of asynchronous agent events execution. format: text + message_generation_started: + $ref: '#/components/schemas/ai-agent-message-generation-started' progress: $ref: '#/components/schemas/ai-agent-event-execute-progress' session: @@ -9745,8 +10033,6 @@ components: type: string description: An identifier of the session with the AI agent. format: text - started: - $ref: '#/components/schemas/ai-agent-message-generation-started' required: - agent - session @@ -10966,6 +11252,60 @@ components: notified. title: get-rev-users-personal-data-response x-go-name: GetRevUsersPersonalDataResponseBody + grid-layout: + type: object + description: | + Grid layout represents the organization of the elements within a + layout. + properties: + layout: + type: array + description: Layout of the elements within the current element. + items: + $ref: '#/components/schemas/grid-layout' + position: + $ref: '#/components/schemas/grid-position' + reference_id: + type: string + description: | + The reference ID for the element to be laid out. It should be an ID + of a tab, section, or widget. + format: text + required: + - reference_id + title: grid-layout + grid-position: + type: object + description: | + A grid position represents the location and size of a widget or section + within its container (dashboard, tab, or section). + properties: + height: + type: integer + description: The height of the widget or section, in grid units. + format: int32 + width: + type: integer + description: The width of the widget or section, in grid units. + format: int32 + x: + type: integer + description: | + The x-coordinate of the top-left corner of the widget or section, + based on a grid system. + format: int32 + "y": + type: integer + description: | + The y-coordinate of the top-left corner of the widget or section, + based on a grid system. + format: int32 + required: + - height + - width + - x + - "y" + title: grid-position group: allOf: - $ref: '#/components/schemas/atom-base' @@ -11336,6 +11676,102 @@ components: - group title: groups-update-response x-go-name: GroupsUpdateResponseBody + heatmap-visualization-x-axis: + type: object + description: The X-axis for a heatmap visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: heatmap-visualization-x-axis + heatmap-visualization-y-axis: + type: object + description: The Y-axis for a heatmap visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: heatmap-visualization-y-axis + heatmap-visualization-z-axis: + type: object + description: The Z-axis for a heatmap visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: heatmap-visualization-z-axis + heatmap-widget-visualization: + type: object + description: | + A heatmap chart visualization configuration. Includes metadata specific + to heatmap charts. + properties: + color: + type: string + description: Color for heatmap. + format: text + x: + $ref: '#/components/schemas/heatmap-visualization-x-axis' + "y": + $ref: '#/components/schemas/heatmap-visualization-y-axis' + z: + $ref: '#/components/schemas/heatmap-visualization-z-axis' + required: + - x + - "y" + - z + title: heatmap-widget-visualization impacted-customer-details: type: object description: Details of the impact due to the incident. @@ -12195,6 +12631,66 @@ components: description: The job title for the user. format: text title: job-history-item + kanban-visualization-card-attribute: + type: object + description: A card attribute in a kanban visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + order: + type: integer + description: | + The order in which the attribute should be displayed in a card. + format: int32 + position: + $ref: '#/components/schemas/kanban-visualization-card-attribute-position' + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: kanban-visualization-card-attribute + kanban-visualization-card-attribute-position: + type: string + description: | + Whether the attribute should be placed in the body or footer of the + kanban. + enum: + - body + - footer + kanban-widget-visualization: + type: object + description: | + A kanban visualization configuration. Includes metadata specific to + kanban. + properties: + card_attributes: + type: array + description: The configuration for the card in the kanban. + items: + $ref: '#/components/schemas/kanban-visualization-card-attribute' + group_by: + type: array + description: The group_by configuration in the kanban. + items: + $ref: '#/components/schemas/widget-group-by-config' + required: + - card_attributes + - group_by + title: kanban-widget-visualization keyrings-create-callback-request: type: object properties: @@ -12246,6 +12742,91 @@ components: required: - name title: legacy-stage-summary + line-visualization-x-axis: + type: object + description: The X-axis for a line visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: line-visualization-x-axis + line-visualization-y-axis: + type: object + description: The Y-axis for a line visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_area_filled: + type: boolean + description: Whether the area under the line should be filled. + is_hidden: + type: boolean + description: Whether the axis should be hidden. + is_spline: + type: boolean + description: Whether the line should be a spline. + label: + type: string + description: The label for the axis. + format: text + marker: + type: boolean + description: Whether the line have circular. + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: line-visualization-y-axis + line-widget-visualization: + type: object + description: | + A line chart visualization configuration. Includes metadata specific to + line charts. + properties: + is_stacked: + type: boolean + description: Whether the line should be stacked. + show_data_labels: + type: boolean + description: Whether to show data labels. + x: + type: array + description: The configuration for the X-axis. + items: + $ref: '#/components/schemas/line-visualization-x-axis' + "y": + type: array + description: The configuration for the Y-axes. + items: + $ref: '#/components/schemas/line-visualization-y-axis' + required: + - x + - "y" + title: line-widget-visualization lines-of-code: type: object description: Details of lines of code in this code change. @@ -12308,11 +12889,13 @@ components: feature: '#/components/schemas/feature-summary' incident: '#/components/schemas/incident-summary' issue: '#/components/schemas/issue-summary' + linkable: '#/components/schemas/linkable-summary' meeting: '#/components/schemas/meeting-summary' opportunity: '#/components/schemas/opportunity-summary' product: '#/components/schemas/product-summary' rev_org: '#/components/schemas/rev-org-summary' rev_user: '#/components/schemas/rev-user-summary' + runnable: '#/components/schemas/runnable-summary' task: '#/components/schemas/task-summary' ticket: '#/components/schemas/ticket-summary' widget: '#/components/schemas/widget-summary' @@ -12328,11 +12911,13 @@ components: - $ref: '#/components/schemas/feature-summary' - $ref: '#/components/schemas/incident-summary' - $ref: '#/components/schemas/issue-summary' + - $ref: '#/components/schemas/linkable-summary' - $ref: '#/components/schemas/meeting-summary' - $ref: '#/components/schemas/opportunity-summary' - $ref: '#/components/schemas/product-summary' - $ref: '#/components/schemas/rev-org-summary' - $ref: '#/components/schemas/rev-user-summary' + - $ref: '#/components/schemas/runnable-summary' - $ref: '#/components/schemas/task-summary' - $ref: '#/components/schemas/ticket-summary' - $ref: '#/components/schemas/widget-summary' @@ -12355,11 +12940,13 @@ components: - feature - incident - issue + - linkable - meeting - opportunity - product - rev_org - rev_user + - runnable - task - ticket - widget @@ -12467,6 +13054,14 @@ components: - is_part_of - is_related_to - serves + linkable: + allOf: + - $ref: '#/components/schemas/part-base' + title: linkable + linkable-summary: + allOf: + - $ref: '#/components/schemas/part-base-summary' + title: linkable-summary links-create-request: type: object description: The request to create a new link. @@ -12628,6 +13223,65 @@ components: enum: - after - before + meerkat-widget-column-function: + type: object + description: A meerkat specific column function. + properties: + type: + $ref: '#/components/schemas/meerkat-widget-column-function-type' + required: + - type + title: meerkat-widget-column-function + meerkat-widget-column-function-type: + type: string + description: The type of the function. + enum: + - avg + - count + - count_distinct + - max + - median + - min + - sum + meerkat-widget-column-projection: + type: object + description: A meerkat specific column projection. + properties: + type: + $ref: '#/components/schemas/meerkat-widget-column-projection-type' + function: + $ref: '#/components/schemas/meerkat-widget-column-function' + sql_expression: + type: string + description: | + The SQL expression used to extract or transform the column from the + data source. + format: text + timestamp_rollup: + $ref: '#/components/schemas/meerkat-widget-column-projection-timestamp-rollup' + required: + - sql_expression + - type + title: meerkat-widget-column-projection + meerkat-widget-column-projection-timestamp-rollup: + type: string + description: The rollup granularity for the timestamp. + enum: + - day + - hour + - month + - week + - year + meerkat-widget-column-projection-type: + type: string + description: The data type of the column generated by the SQL expression. + enum: + - boolean + - number + - number_array + - string + - string_array + - time meeting: allOf: - $ref: '#/components/schemas/atom-base' @@ -13530,6 +14184,47 @@ components: - metric_definition title: metric-definitions-update-response x-go-name: MetricDefinitionsUpdateResponseBody + metric-visualization-y-axis: + type: object + description: The y axis for a metric visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: metric-visualization-y-axis + metric-widget-visualization: + type: object + description: | + A metric visualization configuration. Includes metadata specific to + metrics. + properties: + pvp: + $ref: '#/components/schemas/widget-pvp-config' + "y": + type: array + description: The configuration for the Y-axis. + items: + $ref: '#/components/schemas/metric-visualization-y-axis' + required: + - "y" + title: metric-widget-visualization metrics-data: type: object properties: @@ -14278,6 +14973,76 @@ components: - account - dev_org - rev_org + packed-bubble-visualization-x-axis: + type: object + description: The X-axis for a packed bubble visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: packed-bubble-visualization-x-axis + packed-bubble-visualization-y-axis: + type: object + description: The Y-axis for a packed bubble visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: packed-bubble-visualization-y-axis + packed-bubble-widget-visualization: + type: object + description: | + A Packed Bubble chart visualization configuration. Includes metadata + specific to packed bubble charts. + properties: + x: + type: array + description: The configuration for the X-axis. + items: + $ref: '#/components/schemas/packed-bubble-visualization-x-axis' + "y": + type: array + description: The configuration for the Y-axes. + items: + $ref: '#/components/schemas/packed-bubble-visualization-y-axis' + required: + - x + - "y" + title: packed-bubble-widget-visualization parent-part-filter: type: object description: The filter for specifying parent part. @@ -14306,13 +15071,17 @@ components: capability: '#/components/schemas/capability' enhancement: '#/components/schemas/enhancement' feature: '#/components/schemas/feature' + linkable: '#/components/schemas/linkable' product: '#/components/schemas/product' + runnable: '#/components/schemas/runnable' propertyName: type oneOf: - $ref: '#/components/schemas/capability' - $ref: '#/components/schemas/enhancement' - $ref: '#/components/schemas/feature' + - $ref: '#/components/schemas/linkable' - $ref: '#/components/schemas/product' + - $ref: '#/components/schemas/runnable' properties: type: $ref: '#/components/schemas/part-type' @@ -14416,13 +15185,17 @@ components: capability: '#/components/schemas/capability-summary' enhancement: '#/components/schemas/enhancement-summary' feature: '#/components/schemas/feature-summary' + linkable: '#/components/schemas/linkable-summary' product: '#/components/schemas/product-summary' + runnable: '#/components/schemas/runnable-summary' propertyName: type oneOf: - $ref: '#/components/schemas/capability-summary' - $ref: '#/components/schemas/enhancement-summary' - $ref: '#/components/schemas/feature-summary' + - $ref: '#/components/schemas/linkable-summary' - $ref: '#/components/schemas/product-summary' + - $ref: '#/components/schemas/runnable-summary' properties: type: $ref: '#/components/schemas/part-type' @@ -14435,7 +15208,9 @@ components: - capability - enhancement - feature + - linkable - product + - runnable parts-create-request: type: object discriminator: @@ -14443,13 +15218,17 @@ components: capability: '#/components/schemas/parts-create-request-capability' enhancement: '#/components/schemas/parts-create-request-enhancement' feature: '#/components/schemas/parts-create-request-feature' + linkable: '#/components/schemas/parts-create-request-linkable' product: '#/components/schemas/parts-create-request-product' + runnable: '#/components/schemas/parts-create-request-runnable' propertyName: type oneOf: - $ref: '#/components/schemas/parts-create-request-capability' - $ref: '#/components/schemas/parts-create-request-enhancement' - $ref: '#/components/schemas/parts-create-request-feature' + - $ref: '#/components/schemas/parts-create-request-linkable' - $ref: '#/components/schemas/parts-create-request-product' + - $ref: '#/components/schemas/parts-create-request-runnable' properties: type: $ref: '#/components/schemas/part-type' @@ -14478,6 +15257,11 @@ components: type: string description: Description of the part. format: text + links: + type: array + description: Links associated with the part. + items: + $ref: '#/components/schemas/embed-links-create-request' name: type: string description: Name of the part. @@ -14570,10 +15354,46 @@ components: required: - parent_part title: parts-create-request-feature + parts-create-request-linkable: + type: object + properties: + code_inferred_surface_area: + type: array + description: Code Inferred surface area of the linkable. + items: + type: string + format: text + code_repo_paths: + type: string + description: Repo Path of the linkable. + format: text + code_repo_url: + type: string + description: Repo url of the linkable. + format: text + title: parts-create-request-linkable parts-create-request-product: type: object additionalProperties: false title: parts-create-request-product + parts-create-request-runnable: + type: object + properties: + code_inferred_surface_area: + type: array + description: Code Inferred surface area of the runnable. + items: + type: string + format: text + code_repo_paths: + type: string + description: Repo Path of the runnable. + format: text + code_repo_url: + type: string + description: Repo url of the runnable. + format: text + title: parts-create-request-runnable parts-create-response: type: object properties: @@ -14701,6 +15521,9 @@ components: The cursor to resume iteration from. If not provided, then iteration starts from the beginning. format: text + custom_fields: + type: object + description: Filters for custom fields. enhancement: $ref: '#/components/schemas/parts-filter-enhancement' limit: @@ -14766,15 +15589,19 @@ components: capability: '#/components/schemas/parts-update-request-capability' enhancement: '#/components/schemas/parts-update-request-enhancement' feature: '#/components/schemas/parts-update-request-feature' + linkable: '#/components/schemas/parts-update-request-linkable' none: '#/components/schemas/empty' product: '#/components/schemas/parts-update-request-product' + runnable: '#/components/schemas/parts-update-request-runnable' propertyName: type oneOf: - $ref: '#/components/schemas/empty' - $ref: '#/components/schemas/parts-update-request-capability' - $ref: '#/components/schemas/parts-update-request-enhancement' - $ref: '#/components/schemas/parts-update-request-feature' + - $ref: '#/components/schemas/parts-update-request-linkable' - $ref: '#/components/schemas/parts-update-request-product' + - $ref: '#/components/schemas/parts-update-request-runnable' properties: type: $ref: '#/components/schemas/part-type' @@ -14863,6 +15690,24 @@ components: type: object additionalProperties: false title: parts-update-request-feature + parts-update-request-linkable: + type: object + properties: + code_inferred_surface_area: + type: array + description: Code Inferred surface area of the linkable. + items: + type: string + format: text + code_repo_paths: + type: string + description: Repo Path of the linkable. + format: text + code_repo_url: + type: string + description: Repo url of the linkable. + format: text + title: parts-update-request-linkable parts-update-request-owned-by: type: object properties: @@ -14881,6 +15726,24 @@ components: type: object additionalProperties: false title: parts-update-request-product + parts-update-request-runnable: + type: object + properties: + code_inferred_surface_area: + type: array + description: Code Inferred surface area of the runnable. + items: + type: string + format: text + code_repo_paths: + type: string + description: Repo Path of the runnable. + format: text + code_repo_url: + type: string + description: Repo url of the runnable. + format: text + title: parts-update-request-runnable parts-update-request-tags: type: object properties: @@ -14899,6 +15762,73 @@ components: - part title: parts-update-response x-go-name: PartsUpdateResponseBody + pie-visualization-x-axis: + type: object + description: The X-axis for a pie visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: pie-visualization-x-axis + pie-visualization-y-axis: + type: object + description: The Y-axis for a pie visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: pie-visualization-y-axis + pie-widget-visualization: + type: object + description: | + A pie chart visualization configuration. Includes metadata specific to + pie charts. + properties: + x: + type: array + description: The configuration for the X-axis. + items: + $ref: '#/components/schemas/pie-visualization-x-axis' + "y": + $ref: '#/components/schemas/pie-visualization-y-axis' + required: + - x + - "y" + title: pie-widget-visualization preferences: type: object discriminator: @@ -14926,6 +15856,10 @@ components: properties: type: $ref: '#/components/schemas/preferences-type' + language_code: + type: string + description: Language code for which to get the preferences for. + format: text object: type: string description: | @@ -14961,6 +15895,10 @@ components: properties: type: $ref: '#/components/schemas/preferences-type' + language_code: + type: string + description: Language code for which to update the preferences for. + format: text object: type: string description: | @@ -16601,6 +17539,14 @@ components: - rev_user title: rev-users-update-response x-go-name: RevUsersUpdateResponseBody + rich-text-widget-visualization: + type: object + description: The configuration for a rich text visualization. + properties: + content: + type: object + description: The content of the rich text. + title: rich-text-widget-visualization role: allOf: - $ref: '#/components/schemas/atom-base' @@ -16711,6 +17657,14 @@ components: - role title: roles-create-response x-go-name: RolesCreateResponseBody + runnable: + allOf: + - $ref: '#/components/schemas/part-base' + title: runnable + runnable-summary: + allOf: + - $ref: '#/components/schemas/part-base-summary' + title: runnable-summary saml-connection-fields-map: type: object properties: @@ -16727,6 +17681,76 @@ components: map to the user ID of the user. format: text title: saml-connection-fields-map + scatter-visualization-x-axis: + type: object + description: The X-axis for a scatter visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: scatter-visualization-x-axis + scatter-visualization-y-axis: + type: object + description: The Y-axis for a scatter visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + label: + type: string + description: The label for the axis. + format: text + reference_name: + type: string + description: The reference name of the axis. + format: text + required: + - reference_name + title: scatter-visualization-y-axis + scatter-widget-visualization: + type: object + description: | + A Scatter chart visualization configuration. Includes metadata specific + to scatter charts. + properties: + x: + type: array + description: The configuration for the X-axis. + items: + $ref: '#/components/schemas/scatter-visualization-x-axis' + "y": + type: array + description: The configuration for the Y-axes. + items: + $ref: '#/components/schemas/scatter-visualization-y-axis' + required: + - x + - "y" + title: scatter-widget-visualization schema-bool-field-descriptor: allOf: - $ref: '#/components/schemas/schema-field-descriptor-base' @@ -16826,6 +17850,9 @@ components: type: string description: Default value. format: text + is_overridable: + type: boolean + description: Whether the enum is overridable. translated_values: type: object additionalProperties: @@ -16852,6 +17879,9 @@ components: items: type: string format: text + is_overridable: + type: boolean + description: Whether the enum is overridable. translated_values: type: object additionalProperties: @@ -18085,6 +19115,36 @@ components: allOf: - $ref: '#/components/schemas/user-base-summary' title: service-account-summary + service-accounts-create-request: + type: object + description: The request object to create a new service account. + properties: + display_name: + type: string + description: | + The service account's display name. A unique, human readable name + to identify a service account. + format: text + gen_keyring: + type: boolean + description: | + Indicates whether to generate a keyring along with the new service + account. The default is false. + required: + - display_name + title: service-accounts-create-request + service-accounts-create-response: + type: object + description: | + The response object to the corresponding create service account + request. + properties: + service_account: + $ref: '#/components/schemas/service-account' + required: + - service_account + title: service-accounts-create-response + x-go-name: ServiceAccountsCreateResponseBody service-accounts-get-request: type: object description: The request object to get a service account's information. @@ -19779,6 +20839,26 @@ components: - result title: stock-schema-fragments-list-response x-go-name: StockSchemaFragmentsListResponseBody + sub-widget: + type: object + description: | + A sub-widget represents a data visualization unit contained within a + widget. + properties: + query: + $ref: '#/components/schemas/widget-query' + reference_id: + type: string + description: | + A reference ID for the sub-widget. It should be unique within the + widget. + format: text + visualization: + $ref: '#/components/schemas/widget-visualization' + required: + - reference_id + - visualization + title: sub-widget subtype: type: object properties: @@ -19904,7 +20984,34 @@ components: format: id dispatched_channels: type: array - description: Source channels on which the survey is sent. + description: | + Source channels on which the survey is sent. Stock allowed values: + ``` + { + "id": 1, + "label": "plug", + "ordinal": 1, + "overridable": false + }, + { + "id": 2, + "label": "portal", + "ordinal": 2, + "overridable": false + }, + { + "id": 3, + "label": "email", + "ordinal": 3, + "overridable": false + }, + { + "id": 4, + "label": "slack", + "ordinal": 4, + "overridable": false + } + ``` items: $ref: '#/components/schemas/enum-value' object: @@ -20738,6 +21845,102 @@ components: - sys_user title: sys-users-update-response x-go-name: SysUsersUpdateResponseBody + table-visualization-column: + type: object + description: A column in a table visualization. + properties: + color: + $ref: '#/components/schemas/visualization-axis-color' + drill_throughs: + type: array + description: The drill through configurations for the axis. + items: + $ref: '#/components/schemas/visualization-axis-drill-through' + is_hidden: + type: boolean + description: Whether the axis should be hidden. + is_movable: + type: boolean + description: Whether the column should be movable. + is_pinned: + type: boolean + description: | + Whether the column should be pinned, by default set to false. + is_resizable: + type: boolean + description: Whether the column should be resizable. + is_sortable: + type: boolean + description: Whether the column should be sortable. + is_visibility_togglable: + type: boolean + description: Whether the column visibility can be toggled. + label: + type: string + description: The label for the axis. + format: text + lock_position: + $ref: '#/components/schemas/table-visualization-column-lock-position' + max_width: + type: integer + description: The maximum width of the column. + format: int32 + min_width: + type: integer + description: The minimum width of the column. + format: int32 + order: + type: integer + description: The order in which the column should be displayed. + format: int32 + pin_position: + $ref: '#/components/schemas/table-visualization-column-pin-position' + reference_name: + type: string + description: The reference name of the axis. + format: text + width: + type: integer + description: The width of the column in pixel. + format: int32 + required: + - reference_name + title: table-visualization-column + table-visualization-column-lock-position: + type: string + description: | + Whether the column should be locked to the left or right side of the + table. + enum: + - left + - right + table-visualization-column-pin-position: + type: string + description: | + Whether the column should be pinned to the left or right side of the + table. + enum: + - left + - right + table-widget-visualization: + type: object + description: | + A table visualization configuration. Includes metadata specific to + tables. + properties: + columns: + type: array + description: The configuration for the columns in the table. + items: + $ref: '#/components/schemas/table-visualization-column' + group_by: + type: array + description: The group_by configuration in the table. + items: + $ref: '#/components/schemas/widget-group-by-config' + required: + - columns + title: table-widget-visualization tag: allOf: - $ref: '#/components/schemas/atom-base' @@ -21219,6 +22422,13 @@ components: format: text body_type: $ref: '#/components/schemas/timeline-comment-body-type' + references: + type: array + description: | + Summary information about objects that are referenced in the + comment. + items: + $ref: '#/components/schemas/atom-summary' snap_kit_body: $ref: '#/components/schemas/timeline-snap-kit-body' snap_widget_body: @@ -21706,11 +22916,13 @@ components: - feature - incident - issue + - linkable - meeting - opportunity - product - rev_org - rev_user + - runnable - snap_in - task - ticket @@ -22971,6 +24183,59 @@ components: - curated - dynamic - grouped + visualization-axis-color: + type: object + description: | + The color for an axis. This can be a single color or a gradient. + properties: + type: + $ref: '#/components/schemas/visualization-axis-color-type' + key_lookup: + type: array + description: The key lookup color. + items: + $ref: '#/components/schemas/visualization-axis-color-key-lookup' + static: + type: string + description: The static color. + format: text + required: + - type + title: visualization-axis-color + visualization-axis-color-key-lookup: + type: object + description: | + The key lookup color for an axis. This is used to map a value to a + color. + properties: + key: + type: string + description: The key to map to a color. + format: text + value: + type: string + description: The color value. + format: text + required: + - key + - value + title: visualization-axis-color-key-lookup + visualization-axis-color-type: + type: string + description: The type of the color. + enum: + - key_lookup + - static + visualization-axis-drill-through: + type: object + additionalProperties: false + description: The drill through configuration for an axis. + title: visualization-axis-drill-through + visualization-scrollbar: + type: object + additionalProperties: false + description: The scrollbar configuration for chart. + title: visualization-scrollbar web-crawler-job: allOf: - $ref: '#/components/schemas/atom-base' @@ -23826,11 +25091,441 @@ components: widget: allOf: - $ref: '#/components/schemas/atom-base' + - type: object + properties: + data_sources: + type: array + description: | + Data sources provide the backing data tables for the widget. + items: + $ref: '#/components/schemas/widget-data-source' + description: + type: string + description: | + A brief summary of what the widget displays or represents. + format: text + is_draft: + type: boolean + description: Whether the widget is a draft widget. + is_system: + type: boolean + description: Whether the widget is a system widget. + layout: + type: array + description: | + Layout of the widget. It determines the organization of the sub + widgets. + items: + $ref: '#/components/schemas/grid-layout' + name: + type: string + description: A unique identifying name for the widget (optional). + format: text + sub_widgets: + type: array + description: | + A list of sub-widgets that the widget contains. Each widget can + contain multiple sub-widgets. + items: + $ref: '#/components/schemas/sub-widget' + title: + type: string + description: The title of the widget. + format: text + required: + - description + - layout + - sub_widgets + - title title: widget + widget-api-data-source: + type: object + description: An API-backed data source. + properties: + include: + type: array + description: Object IDs to include in the data source. + items: + $ref: '#/components/schemas/work-summary' + is_custom_leaf_type: + type: boolean + description: Indicates if the leaf type is custom. + leaf_type: + type: string + description: The object's type. + format: text + subtypes: + type: array + description: The subtypes of the object. + items: + type: string + format: text + title: widget-api-data-source + widget-column-projection: + type: object + description: A widget column projection. + properties: + type: + $ref: '#/components/schemas/widget-column-projection-type' + custom_field: + $ref: '#/components/schemas/custom-field-widget-column-projection' + devrev_schema: + $ref: '#/components/schemas/schema-field-descriptor' + has_custom_expression: + type: boolean + description: Whether the column has a custom expression. + is_derived: + type: boolean + description: Whether the column is derived. + meerkat_schema: + $ref: '#/components/schemas/meerkat-widget-column-projection' + reference_name: + type: string + description: The reference name of the column. + format: text + required: + - devrev_schema + - reference_name + title: widget-column-projection + widget-column-projection-type: + type: string + description: The type of the column. + enum: + - custom_field + - native + widget-data-source: + type: object + description: A data source for a widget. + properties: + type: + $ref: '#/components/schemas/widget-data-source-type' + api: + $ref: '#/components/schemas/widget-api-data-source' + data_source: + type: string + description: | + The ID of the data source. Meant to be set when the type is + data_source. + format: text + dimensions: + type: array + description: | + The dimensions (or the extended dimensions) provided by the data + source. These are the categories that can be used to group or + segment the measures. + items: + $ref: '#/components/schemas/widget-column-projection' + external_data_source: + $ref: '#/components/schemas/widget-data-source-reference' + joins: + type: array + description: | + A list of possible joins for the data source. Follows foreign key + semantics. + items: + $ref: '#/components/schemas/data-source-join' + measures: + type: array + description: | + The measures (or the extended measures) provided by the data + source. These are the numerical values that can be analyzed. + items: + $ref: '#/components/schemas/widget-column-projection' + oasis: + $ref: '#/components/schemas/widget-oasis-data-source' + reference_name: + type: string + description: The reference name of the data source. + format: text + required: + - reference_name + - type + title: widget-data-source + widget-data-source-reference: + type: object + description: An referenced data source for a widget. + properties: + dataset_projections: + type: array + description: | + The column projections for the data source. These are the columns + that are projected from the datasets. + items: + $ref: '#/components/schemas/widget-oasis-dataset-column-projection' + id: + type: string + description: The id of the data source. + format: text + required: + - id + title: widget-data-source-reference + widget-data-source-type: + type: string + description: The type of the data source. + enum: + - api + - data_source + - data_view + - external_data_source + - oasis + widget-group-by-config: + type: object + description: The configuration for group_by operation. + properties: + key: + type: string + description: The key on which group_by is applied. + format: text + limit: + type: integer + description: | + The maximum number of unique values that can be returned for the + key. + format: int32 + title: widget-group-by-config + widget-oasis-data-source: + type: object + description: An oasis backed data source. + properties: + datasets: + type: array + description: List of datasets used by the data source. + items: + type: string + format: text + projections: + type: array + description: | + The column projections for the data source. These are the columns + that are projected from the datasets. + items: + $ref: '#/components/schemas/widget-oasis-dataset-column-projection' + sql_query: + type: string + description: | + The base SQL query that constructs the view for the data source. + The SQL can reference the datasets using their aliases. + format: text + required: + - sql_query + title: widget-oasis-data-source + widget-oasis-dataset-column: + type: object + description: An oasis dataset column. + properties: + custom_field: + $ref: '#/components/schemas/custom-field-widget-column-projection' + name: + type: string + description: The name of the column. + format: text + required: + - name + title: widget-oasis-dataset-column + widget-oasis-dataset-column-projection: + type: object + description: An oasis dataset column projection. + properties: + columns: + type: array + description: The column name. + items: + $ref: '#/components/schemas/widget-oasis-dataset-column' + dataset: + type: string + description: The dataset ID. + format: text + required: + - columns + - dataset + title: widget-oasis-dataset-column-projection + widget-pvp-config: + type: object + description: | + Configuration settings for enabling and customizing PVP (past vs. + present) value in widgets. + properties: + enabled: + type: boolean + description: Indicates whether PVP is enabled. + invert_correlation_color: + type: boolean + description: Specifies whether the color scheme for PVP is inverted. + percentage_precision: + type: integer + description: Decimal precision for percentage. + format: int32 + title: widget-pvp-config + widget-query: + type: object + description: | + The query for a widget. This includes measures and dimensions to be + visualized. + properties: + dimensions: + type: array + description: | + The dimensions for the query, which are the categories to group or + segment the measures. Usually these are the X-axis values in a + visualization. + items: + type: string + format: text + filters: + type: array + description: | + Set of filters to apply on the widgets. These filters are applied + on top of the dashboard level filters. + items: + $ref: '#/components/schemas/dashboard-filter' + joins: + type: array + description: Join paths to use for the query. + items: + $ref: '#/components/schemas/widget-query-joins' + limit: + type: integer + description: | + The maximum number of records to return. This is used to limit the + amount of data returned by the query. + format: int32 + measures: + type: array + description: | + The measures for the query, which are the numerical values to be + analyzed. Usually these are the Y-axis values in a visualization. + items: + type: string + format: text + order_by: + type: array + description: | + The order in which the data should be returned. This is used to + sort the data returned by the query. + items: + $ref: '#/components/schemas/widget-query-order-by' + title: widget-query + widget-query-joins: + type: object + description: | + A list of possible joins for the data source. Follows foreign key + semantics. + properties: + path: + type: array + description: A list of joins. + items: + type: string + format: text + required: + - path + title: widget-query-joins + widget-query-order-by: + type: object + description: | + The order in which the data should be returned. This is used to sort + the data returned by the query. + properties: + direction: + $ref: '#/components/schemas/widget-query-order-by-direction' + reference_name: + type: string + description: The column to sort by. + format: text + required: + - direction + - reference_name + title: widget-query-order-by + widget-query-order-by-direction: + type: string + description: The direction of the sort. + enum: + - ascending + - descending widget-summary: allOf: - $ref: '#/components/schemas/atom-base-summary' + - type: object + properties: + title: + type: string + description: The title of the widget. + format: text + required: + - title title: widget-summary + widget-visualization: + type: object + description: | + The visualization for a widget. This includes the type of visualization + and any configuration specific to that type. + properties: + type: + $ref: '#/components/schemas/widget-visualization-type' + bar: + $ref: '#/components/schemas/bar-widget-visualization' + column: + $ref: '#/components/schemas/column-widget-visualization' + donut: + $ref: '#/components/schemas/donut-widget-visualization' + heatmap: + $ref: '#/components/schemas/heatmap-widget-visualization' + kanban: + $ref: '#/components/schemas/kanban-widget-visualization' + line: + $ref: '#/components/schemas/line-widget-visualization' + metric: + $ref: '#/components/schemas/metric-widget-visualization' + packed_bubble: + $ref: '#/components/schemas/packed-bubble-widget-visualization' + pie: + $ref: '#/components/schemas/pie-widget-visualization' + rich_text: + $ref: '#/components/schemas/rich-text-widget-visualization' + scatter: + $ref: '#/components/schemas/scatter-widget-visualization' + table: + $ref: '#/components/schemas/table-widget-visualization' + required: + - type + title: widget-visualization + widget-visualization-type: + type: string + description: The type of the visualization, such as line, bar, pie, etc. + enum: + - bar + - column + - donut + - heatmap + - kanban + - line + - metric + - packed_bubble + - pie + - rich_text + - scatter + - table + widgets-get-request: + type: object + description: The request to get a widget. + properties: + id: + type: string + description: The requested widget's ID. + format: text + required: + - id + title: widgets-get-request + widgets-get-response: + type: object + description: The response to a widget get request. + properties: + widget: + $ref: '#/components/schemas/widget' + required: + - widget + title: widgets-get-response + x-go-name: WidgetsGetResponseBody work: type: object discriminator: @@ -24122,8 +25817,53 @@ components: priority_v2: type: integer description: | - Priority enum id of the work based upon impact and criticality. + Priority enum id of the work based upon impact and criticality. The + allowed ids can be extended by the user. Stock allowed values: + ``` + { + "id": 1, + "label": "P0", + "ordinal": 1, + "overridable": true + }, + { + "id": 2, + "label": "P1", + "ordinal": 2, + "overridable": true + }, + { + "id": 3, + "label": "P2", + "ordinal": 3, + "overridable": true + }, + { + "id": 4, + "label": "P3", + "ordinal": 4, + "overridable": true + } + ``` format: int64 + x-devrev-uenum-overridable: true + x-devrev-uenum-values: + - id: 1 + label: P0 + ordinal: 1 + overridable: true + - id: 2 + label: P1 + ordinal: 2 + overridable: true + - id: 3 + label: P2 + ordinal: 3 + overridable: true + - id: 4 + label: P3 + ordinal: 4 + overridable: true sprint: type: string description: The sprint that the issue belongs to. @@ -24163,8 +25903,74 @@ components: $ref: '#/components/schemas/opportunity-forecast-category' forecast_category_v2: type: integer - description: Forecast category enum ID of an opportunity. + description: | + Forecast category enum ID of an opportunity. The allowed ids can be + extended by the user. Stock allowed values: + ``` + { + "id": 1, + "label": "Omitted", + "ordinal": 1, + "overridable": true + }, + { + "id": 2, + "label": "Pipeline", + "ordinal": 2, + "overridable": true + }, + { + "id": 3, + "label": "Upside", + "ordinal": 3, + "overridable": true + }, + { + "id": 4, + "label": "Strong Upside", + "ordinal": 4, + "overridable": true + }, + { + "id": 5, + "label": "Commit", + "ordinal": 5, + "overridable": true + }, + { + "id": 6, + "label": "Won", + "ordinal": 6, + "overridable": true + } + ``` format: int64 + x-devrev-uenum-overridable: true + x-devrev-uenum-values: + - id: 1 + label: Omitted + ordinal: 1 + overridable: true + - id: 2 + label: Pipeline + ordinal: 2 + overridable: true + - id: 3 + label: Upside + ordinal: 3 + overridable: true + - id: 4 + label: Strong Upside + ordinal: 4 + overridable: true + - id: 5 + label: Commit + ordinal: 5 + overridable: true + - id: 6 + label: Won + ordinal: 6 + overridable: true priority: $ref: '#/components/schemas/opportunity-priority' probability: @@ -24779,8 +26585,53 @@ components: priority_v2: type: integer description: | - Priority enum id of the work based upon impact and criticality. + Priority enum id of the work based upon impact and criticality. The + allowed ids can be extended by the user. Stock allowed values: + ``` + { + "id": 1, + "label": "P0", + "ordinal": 1, + "overridable": true + }, + { + "id": 2, + "label": "P1", + "ordinal": 2, + "overridable": true + }, + { + "id": 3, + "label": "P2", + "ordinal": 3, + "overridable": true + }, + { + "id": 4, + "label": "P3", + "ordinal": 4, + "overridable": true + } + ``` format: int64 + x-devrev-uenum-overridable: true + x-devrev-uenum-values: + - id: 1 + label: P0 + ordinal: 1 + overridable: true + - id: 2 + label: P1 + ordinal: 2 + overridable: true + - id: 3 + label: P2 + ordinal: 3 + overridable: true + - id: 4 + label: P3 + ordinal: 4 + overridable: true sprint: type: string description: Updates the sprint that the issue belongs to. @@ -24832,8 +26683,74 @@ components: nullable: true forecast_category_v2: type: integer - description: Forecast category enum ID of an opportunity. + description: | + Forecast category enum ID of an opportunity. The allowed ids can be + extended by the user. Stock allowed values: + ``` + { + "id": 1, + "label": "Omitted", + "ordinal": 1, + "overridable": true + }, + { + "id": 2, + "label": "Pipeline", + "ordinal": 2, + "overridable": true + }, + { + "id": 3, + "label": "Upside", + "ordinal": 3, + "overridable": true + }, + { + "id": 4, + "label": "Strong Upside", + "ordinal": 4, + "overridable": true + }, + { + "id": 5, + "label": "Commit", + "ordinal": 5, + "overridable": true + }, + { + "id": 6, + "label": "Won", + "ordinal": 6, + "overridable": true + } + ``` format: int64 + x-devrev-uenum-overridable: true + x-devrev-uenum-values: + - id: 1 + label: Omitted + ordinal: 1 + overridable: true + - id: 2 + label: Pipeline + ordinal: 2 + overridable: true + - id: 3 + label: Upside + ordinal: 3 + overridable: true + - id: 4 + label: Strong Upside + ordinal: 4 + overridable: true + - id: 5 + label: Commit + ordinal: 5 + overridable: true + - id: 6 + label: Won + ordinal: 6 + overridable: true probability: type: number description: | @@ -24997,8 +26914,64 @@ components: nullable: true sentiment: type: integer - description: The enum ID for the sentiment of the ticket. + description: | + The enum ID for the sentiment of the ticket. The allowed ids can be + extended by the user. Stock allowed values: + ``` + { + "id": 1, + "label": "Delighted", + "ordinal": 1, + "overridable": true + }, + { + "id": 2, + "label": "Happy", + "ordinal": 2, + "overridable": true + }, + { + "id": 3, + "label": "Neutral", + "ordinal": 3, + "overridable": true + }, + { + "id": 4, + "label": "Unhappy", + "ordinal": 4, + "overridable": true + }, + { + "id": 5, + "label": "Frustrated", + "ordinal": 5, + "overridable": true + } + ``` format: int64 + x-devrev-uenum-overridable: true + x-devrev-uenum-values: + - id: 1 + label: Delighted + ordinal: 1 + overridable: true + - id: 2 + label: Happy + ordinal: 2 + overridable: true + - id: 3 + label: Neutral + ordinal: 3 + overridable: true + - id: 4 + label: Unhappy + ordinal: 4 + overridable: true + - id: 5 + label: Frustrated + ordinal: 5 + overridable: true sentiment_modified_date: type: string description: Timestamp at which sentiment was last modified. @@ -34867,6 +36840,12 @@ paths: schema: type: string format: text + - description: Filters for custom fields. + explode: false + in: query + name: custom_fields + schema: + type: object - description: Filters for enhancement by its accounts. explode: false in: query @@ -35199,6 +37178,13 @@ paths: required: true schema: $ref: '#/components/schemas/preferences-type' + - description: Language code for which to get the preferences for. + explode: false + in: query + name: language_code + schema: + type: string + format: text responses: "200": content: @@ -38245,6 +40231,43 @@ paths: x-fern-audiences: - docs - sdks + /service-accounts.create: + post: + description: Creates a service account. + operationId: service-accounts-create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/service-accounts-create-request' + required: true + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/service-accounts-create-response' + description: | + The response object to the corresponding create service account + request. + "400": + $ref: '#/components/responses/bad-request' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "429": + $ref: '#/components/responses/too-many-requests' + "500": + $ref: '#/components/responses/internal-server-error' + "503": + $ref: '#/components/responses/service-unavailable' + summary: Create Service Account + tags: + - service-accounts + x-fern-audiences: + - docs + - sdks /service-accounts.get: get: description: Gets a service account. @@ -42271,6 +44294,78 @@ paths: x-fern-audiences: - docs - sdks + /widgets.get: + get: + description: Returns the requested widget. + operationId: widgets-get + parameters: + - description: The requested widget's ID. + explode: false + in: query + name: id + required: true + schema: + type: string + format: text + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/widgets-get-response' + description: The response to a widget get request. + "400": + $ref: '#/components/responses/bad-request' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "429": + $ref: '#/components/responses/too-many-requests' + "500": + $ref: '#/components/responses/internal-server-error' + "503": + $ref: '#/components/responses/service-unavailable' + summary: Get Widget + tags: + - widgets + x-fern-audiences: + - docs + x-request-name: WidgetsGetQuery + post: + description: Returns the requested widget. + operationId: widgets-get-post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/widgets-get-request' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/widgets-get-response' + description: The response to a widget get request. + "400": + $ref: '#/components/responses/bad-request' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "429": + $ref: '#/components/responses/too-many-requests' + "500": + $ref: '#/components/responses/internal-server-error' + "503": + $ref: '#/components/responses/service-unavailable' + summary: Get Widget (POST) + tags: + - widgets + x-fern-audiences: + - docs + - sdks /works.create: post: description: | @@ -43446,6 +45541,8 @@ tags: name: web-crawler-job - description: Webhook event APIs. name: webhooks + - description: Widgets APIs. + name: widgets - description: DevRev work interactions. name: works x-fern-version: diff --git a/fern/apis/public/openapi-public.yaml b/fern/apis/public/openapi-public.yaml index 4e9ffd07..a565af16 100644 --- a/fern/apis/public/openapi-public.yaml +++ b/fern/apis/public/openapi-public.yaml @@ -4658,8 +4658,8 @@ components: enum: - error - message + - message_generation_started - progress - - started client_metadata: type: object description: | @@ -4671,6 +4671,8 @@ components: description: | The final response of asynchronous agent events execution. format: text + message_generation_started: + $ref: '#/components/schemas/ai-agent-message-generation-started' progress: $ref: '#/components/schemas/ai-agent-event-execute-progress' session: @@ -4683,8 +4685,6 @@ components: type: string description: An identifier of the session with the AI agent. format: text - started: - $ref: '#/components/schemas/ai-agent-message-generation-started' required: - agent - session @@ -7593,6 +7593,9 @@ components: type: string description: Default value. format: text + is_overridable: + type: boolean + description: Whether the enum is overridable. translated_values: type: object additionalProperties: @@ -7619,6 +7622,9 @@ components: items: type: string format: text + is_overridable: + type: boolean + description: Whether the enum is overridable. translated_values: type: object additionalProperties: @@ -8250,6 +8256,36 @@ components: allOf: - $ref: '#/components/schemas/user-base-summary' title: service-account-summary + service-accounts-create-request: + type: object + description: The request object to create a new service account. + properties: + display_name: + type: string + description: | + The service account's display name. A unique, human readable name + to identify a service account. + format: text + gen_keyring: + type: boolean + description: | + Indicates whether to generate a keyring along with the new service + account. The default is false. + required: + - display_name + title: service-accounts-create-request + service-accounts-create-response: + type: object + description: | + The response object to the corresponding create service account + request. + properties: + service_account: + $ref: '#/components/schemas/service-account' + required: + - service_account + title: service-accounts-create-response + x-go-name: ServiceAccountsCreateResponseBody service-accounts-get-request: type: object description: The request object to get a service account's information. @@ -9264,7 +9300,34 @@ components: format: id dispatched_channels: type: array - description: Source channels on which the survey is sent. + description: | + Source channels on which the survey is sent. Stock allowed values: + ``` + { + "id": 1, + "label": "plug", + "ordinal": 1, + "overridable": false + }, + { + "id": 2, + "label": "portal", + "ordinal": 2, + "overridable": false + }, + { + "id": 3, + "label": "email", + "ordinal": 3, + "overridable": false + }, + { + "id": 4, + "label": "slack", + "ordinal": 4, + "overridable": false + } + ``` items: $ref: '#/components/schemas/enum-value' object: @@ -9993,6 +10056,13 @@ components: format: text body_type: $ref: '#/components/schemas/timeline-comment-body-type' + references: + type: array + description: | + Summary information about objects that are referenced in the + comment. + items: + $ref: '#/components/schemas/atom-summary' snap_kit_body: $ref: '#/components/schemas/timeline-snap-kit-body' snap_widget_body: @@ -11159,8 +11229,53 @@ components: priority_v2: type: integer description: | - Priority enum id of the work based upon impact and criticality. + Priority enum id of the work based upon impact and criticality. The + allowed ids can be extended by the user. Stock allowed values: + ``` + { + "id": 1, + "label": "P0", + "ordinal": 1, + "overridable": true + }, + { + "id": 2, + "label": "P1", + "ordinal": 2, + "overridable": true + }, + { + "id": 3, + "label": "P2", + "ordinal": 3, + "overridable": true + }, + { + "id": 4, + "label": "P3", + "ordinal": 4, + "overridable": true + } + ``` format: int64 + x-devrev-uenum-overridable: true + x-devrev-uenum-values: + - id: 1 + label: P0 + ordinal: 1 + overridable: true + - id: 2 + label: P1 + ordinal: 2 + overridable: true + - id: 3 + label: P2 + ordinal: 3 + overridable: true + - id: 4 + label: P3 + ordinal: 4 + overridable: true sprint: type: string description: The sprint that the issue belongs to. @@ -11670,8 +11785,53 @@ components: priority_v2: type: integer description: | - Priority enum id of the work based upon impact and criticality. + Priority enum id of the work based upon impact and criticality. The + allowed ids can be extended by the user. Stock allowed values: + ``` + { + "id": 1, + "label": "P0", + "ordinal": 1, + "overridable": true + }, + { + "id": 2, + "label": "P1", + "ordinal": 2, + "overridable": true + }, + { + "id": 3, + "label": "P2", + "ordinal": 3, + "overridable": true + }, + { + "id": 4, + "label": "P3", + "ordinal": 4, + "overridable": true + } + ``` format: int64 + x-devrev-uenum-overridable: true + x-devrev-uenum-values: + - id: 1 + label: P0 + ordinal: 1 + overridable: true + - id: 2 + label: P1 + ordinal: 2 + overridable: true + - id: 3 + label: P2 + ordinal: 3 + overridable: true + - id: 4 + label: P3 + ordinal: 4 + overridable: true sprint: type: string description: Updates the sprint that the issue belongs to. @@ -11815,8 +11975,64 @@ components: nullable: true sentiment: type: integer - description: The enum ID for the sentiment of the ticket. + description: | + The enum ID for the sentiment of the ticket. The allowed ids can be + extended by the user. Stock allowed values: + ``` + { + "id": 1, + "label": "Delighted", + "ordinal": 1, + "overridable": true + }, + { + "id": 2, + "label": "Happy", + "ordinal": 2, + "overridable": true + }, + { + "id": 3, + "label": "Neutral", + "ordinal": 3, + "overridable": true + }, + { + "id": 4, + "label": "Unhappy", + "ordinal": 4, + "overridable": true + }, + { + "id": 5, + "label": "Frustrated", + "ordinal": 5, + "overridable": true + } + ``` format: int64 + x-devrev-uenum-overridable: true + x-devrev-uenum-values: + - id: 1 + label: Delighted + ordinal: 1 + overridable: true + - id: 2 + label: Happy + ordinal: 2 + overridable: true + - id: 3 + label: Neutral + ordinal: 3 + overridable: true + - id: 4 + label: Unhappy + ordinal: 4 + overridable: true + - id: 5 + label: Frustrated + ordinal: 5 + overridable: true sentiment_modified_date: type: string description: Timestamp at which sentiment was last modified. @@ -16663,6 +16879,43 @@ paths: x-fern-audiences: - docs - sdks + /service-accounts.create: + post: + description: Creates a service account. + operationId: service-accounts-create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/service-accounts-create-request' + required: true + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/service-accounts-create-response' + description: | + The response object to the corresponding create service account + request. + "400": + $ref: '#/components/responses/bad-request' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "429": + $ref: '#/components/responses/too-many-requests' + "500": + $ref: '#/components/responses/internal-server-error' + "503": + $ref: '#/components/responses/service-unavailable' + summary: Create Service Account + tags: + - service-accounts + x-fern-audiences: + - docs + - sdks /service-accounts.get: get: description: Gets a service account. From 6b5ecd21a2f9285e79fce668fa4da58896def3d1 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Thu, 17 Apr 2025 16:15:04 -0700 Subject: [PATCH 02/22] from LLM via changelog.py --- fern/apis/beta/changelog/2025-04-17.md | 47 ++++++++++++++++++++++++ fern/apis/public/changelog/2025-04-17.md | 46 +++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 fern/apis/beta/changelog/2025-04-17.md create mode 100644 fern/apis/public/changelog/2025-04-17.md diff --git a/fern/apis/beta/changelog/2025-04-17.md b/fern/apis/beta/changelog/2025-04-17.md new file mode 100644 index 00000000..a0fca431 --- /dev/null +++ b/fern/apis/beta/changelog/2025-04-17.md @@ -0,0 +1,47 @@ + +## New Endpoints + +### Service Accounts +- Added [`/service-accounts.create`](/beta/api-reference/service-accounts/create) for creating service accounts + +### Widgets +- Added [`/widgets.get`](/beta/api-reference/widgets/get-post) for retrieving widgets (GET and POST methods) + +## Modified Features + +### Schema Extensions +- Added `is_overridable` property to schema enum fields, affecting: + - Content templates + - Custom schemas + - Schema fragments + - Survey schemas + +### Survey Channels +- Enhanced documentation for `dispatched_channels` in surveys with detailed stock values for: + - `plug` (id: 1) + - `portal` (id: 2) + - `email` (id: 3) + - `slack` (id: 4) + +### AI Agent Responses +- Renamed `started` to `message_generation_started` in agent response events + +### Timeline Comments +- Added `references` property to timeline comment objects + +### Works Priority and Categories +- Added documentation for `priority_v2` enum values for works: + - `P0` through `P3` (ids 1-4, all overridable) + +- Added documentation for opportunity `forecast_category_v2` enum values: + - `Omitted` through `Won` (ids 1-6, all overridable) + +### Object Types +- Added new types `linkable` and `runnable` as valid values for: + - Article parts + - Object summary references + - Timeline entries + - Work items + - Linked items + +This changelog summarizes major API changes while preserving all endpoint URLs and critical details about schema modifications. \ No newline at end of file diff --git a/fern/apis/public/changelog/2025-04-17.md b/fern/apis/public/changelog/2025-04-17.md new file mode 100644 index 00000000..224d57ab --- /dev/null +++ b/fern/apis/public/changelog/2025-04-17.md @@ -0,0 +1,46 @@ + + +## New Endpoints + +### Service Accounts +- Added [`POST /service-accounts.create`](/public/api-reference/service-accounts/create) endpoint for creating service accounts + +## Modified Endpoints + +### AI Agent Response Events +- In [`POST /webhooks.event`](/public/api-reference/webhooks/event): + - Renamed event type from `started` to `message_generation_started` in `ai_agent_response` + +### Comments & Conversations +- Added `references` property to timeline comments, affecting: + - [`GET /atoms.get`](/public/api-reference/atoms/get-post) + - [`POST /atoms.get`](/public/api-reference/atoms/get-post) + - [`POST /conversations.create`](/public/api-reference/conversations/create) + - [`GET /conversations.get`](/public/api-reference/conversations/get-post) + - [`POST /conversations.get`](/public/api-reference/conversations/get-post) + - [`GET /conversations.list`](/public/api-reference/conversations/list-post) + - [`POST /conversations.list`](/public/api-reference/conversations/list-post) + - [`POST /conversations.update`](/public/api-reference/conversations/update) + - [`POST /timeline-entries.create`](/public/api-reference/timeline-entries/create) + - [`GET /timeline-entries.get`](/public/api-reference/timeline-entries/get-post) + - [`POST /timeline-entries.get`](/public/api-reference/timeline-entries/get-post) + - [`GET /timeline-entries.list`](/public/api-reference/timeline-entries/list-post) + - [`POST /timeline-entries.list`](/public/api-reference/timeline-entries/list-post) + - [`POST /timeline-entries.update`](/public/api-reference/timeline-entries/update) + +### Surveys +- Added documentation for stock allowed values and enhanced descriptions for: + - `dispatched_channels` in survey responses APIs: + - [`GET /surveys.responses.list`](/public/api-reference/surveys/responses-list-post) + - [`POST /surveys.responses.list`](/public/api-reference/surveys/responses-list-post) + - Added `is_overridable` property to schema enum field descriptors + +### Works +- Enhanced documentation for priority and sentiment enums in: + - [`POST /works.create`](/public/api-reference/works/create): Added documentation for stock priority values (`P0` through `P3`) + - [`POST /works.update`](/public/api-reference/works/update): + - Added documentation for stock priority values (`P0` through `P3`) + - Added documentation for stock sentiment values (`Delighted` through `Frustrated`) + - Added `x-devrev-uenum-overridable` and `x-devrev-uenum-values` extensions + +Note: Many of these changes involve adding better documentation and explicit enumerations for existing fields rather than changing the underlying functionality. \ No newline at end of file From 3b8733bf3a2b1ca8c80f4d203290cfbefa0cf790 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Thu, 17 Apr 2025 16:53:28 -0700 Subject: [PATCH 03/22] slight prompt revision --- changelog.py | 8 ++++---- llm_client.py | 2 -- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/changelog.py b/changelog.py index 74ee1344..72d40fa5 100644 --- a/changelog.py +++ b/changelog.py @@ -15,15 +15,15 @@ def main(vrn, d): outfile.write(p) print(f"Wrote prompt to {pr_file}.") - l = llm_client.get_response(p) - + print('Sending request to LLM.') + l = llm_client.get_lines_between_tags(llm_client.get_response(p), 'changelog') log_file = f"./fern/apis/{vrn}/changelog/{d}.md" if (l): with open(log_file, 'w', encoding="utf-8") as outfile: outfile.write(l) print(f"Wrote log to {log_file}.") else: - print(f"Failed to generate {log_file}.") + print(f"Failed to generate {log_file}. No response from LLM.") @@ -32,7 +32,7 @@ def gen_prompt(oasdiff, links, version): oasdiff = infile.read() prompt = f""" -Please provide an API changelog for the {version} API from the following OASDiff of OpenAPI spec changes. The output should be in markdown format grouping endpoints by use case/object type. For cases where some schema is modified, please also tell what endpoints it affects. Wherever an endpoint, property, or enum value is mentioned, surround it with backticks (`). Wherever an API is mentioned, include a hyperlink to the corresponding path from `` section. +Please provide an API changelog for the {version} API from the following OASDiff of OpenAPI spec changes. The output should be in markdown format grouping endpoints by use case/object type. For cases where some schema is modified, please also tell what endpoints it affects. Wherever an endpoint, property, or enum value is mentioned, surround it with backticks (`). Wherever an API is mentioned, include a hyperlink to the corresponding path from `` section. Place the changelog in a `` element in your response so I can parse it out. {oasdiff} diff --git a/llm_client.py b/llm_client.py index 16f22a14..f403c6bf 100644 --- a/llm_client.py +++ b/llm_client.py @@ -22,8 +22,6 @@ def get_response(prompt): headers=headers) response = r.json()['choices'][0]['message']['content'] response = re.sub(r"^# .*\n?", '', response, flags=re.MULTILINE) - response = re.sub(r"^Here.*\n?", '', response, flags=re.MULTILINE) - response = re.sub(r"^Let me know.*\n?", '', response, flags=re.MULTILINE) return response except Exception as e: print(f"Failed to generate changelog. Error: {type(e)} {e} {r}") From afde76b07d7fd735be6c6a16427de7cd8b2858b6 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Thu, 17 Apr 2025 16:54:12 -0700 Subject: [PATCH 04/22] removed to test --- fern/apis/beta/changelog/2025-04-17.md | 47 ------------------------ fern/apis/public/changelog/2025-04-17.md | 46 ----------------------- 2 files changed, 93 deletions(-) delete mode 100644 fern/apis/beta/changelog/2025-04-17.md delete mode 100644 fern/apis/public/changelog/2025-04-17.md diff --git a/fern/apis/beta/changelog/2025-04-17.md b/fern/apis/beta/changelog/2025-04-17.md deleted file mode 100644 index a0fca431..00000000 --- a/fern/apis/beta/changelog/2025-04-17.md +++ /dev/null @@ -1,47 +0,0 @@ - -## New Endpoints - -### Service Accounts -- Added [`/service-accounts.create`](/beta/api-reference/service-accounts/create) for creating service accounts - -### Widgets -- Added [`/widgets.get`](/beta/api-reference/widgets/get-post) for retrieving widgets (GET and POST methods) - -## Modified Features - -### Schema Extensions -- Added `is_overridable` property to schema enum fields, affecting: - - Content templates - - Custom schemas - - Schema fragments - - Survey schemas - -### Survey Channels -- Enhanced documentation for `dispatched_channels` in surveys with detailed stock values for: - - `plug` (id: 1) - - `portal` (id: 2) - - `email` (id: 3) - - `slack` (id: 4) - -### AI Agent Responses -- Renamed `started` to `message_generation_started` in agent response events - -### Timeline Comments -- Added `references` property to timeline comment objects - -### Works Priority and Categories -- Added documentation for `priority_v2` enum values for works: - - `P0` through `P3` (ids 1-4, all overridable) - -- Added documentation for opportunity `forecast_category_v2` enum values: - - `Omitted` through `Won` (ids 1-6, all overridable) - -### Object Types -- Added new types `linkable` and `runnable` as valid values for: - - Article parts - - Object summary references - - Timeline entries - - Work items - - Linked items - -This changelog summarizes major API changes while preserving all endpoint URLs and critical details about schema modifications. \ No newline at end of file diff --git a/fern/apis/public/changelog/2025-04-17.md b/fern/apis/public/changelog/2025-04-17.md deleted file mode 100644 index 224d57ab..00000000 --- a/fern/apis/public/changelog/2025-04-17.md +++ /dev/null @@ -1,46 +0,0 @@ - - -## New Endpoints - -### Service Accounts -- Added [`POST /service-accounts.create`](/public/api-reference/service-accounts/create) endpoint for creating service accounts - -## Modified Endpoints - -### AI Agent Response Events -- In [`POST /webhooks.event`](/public/api-reference/webhooks/event): - - Renamed event type from `started` to `message_generation_started` in `ai_agent_response` - -### Comments & Conversations -- Added `references` property to timeline comments, affecting: - - [`GET /atoms.get`](/public/api-reference/atoms/get-post) - - [`POST /atoms.get`](/public/api-reference/atoms/get-post) - - [`POST /conversations.create`](/public/api-reference/conversations/create) - - [`GET /conversations.get`](/public/api-reference/conversations/get-post) - - [`POST /conversations.get`](/public/api-reference/conversations/get-post) - - [`GET /conversations.list`](/public/api-reference/conversations/list-post) - - [`POST /conversations.list`](/public/api-reference/conversations/list-post) - - [`POST /conversations.update`](/public/api-reference/conversations/update) - - [`POST /timeline-entries.create`](/public/api-reference/timeline-entries/create) - - [`GET /timeline-entries.get`](/public/api-reference/timeline-entries/get-post) - - [`POST /timeline-entries.get`](/public/api-reference/timeline-entries/get-post) - - [`GET /timeline-entries.list`](/public/api-reference/timeline-entries/list-post) - - [`POST /timeline-entries.list`](/public/api-reference/timeline-entries/list-post) - - [`POST /timeline-entries.update`](/public/api-reference/timeline-entries/update) - -### Surveys -- Added documentation for stock allowed values and enhanced descriptions for: - - `dispatched_channels` in survey responses APIs: - - [`GET /surveys.responses.list`](/public/api-reference/surveys/responses-list-post) - - [`POST /surveys.responses.list`](/public/api-reference/surveys/responses-list-post) - - Added `is_overridable` property to schema enum field descriptors - -### Works -- Enhanced documentation for priority and sentiment enums in: - - [`POST /works.create`](/public/api-reference/works/create): Added documentation for stock priority values (`P0` through `P3`) - - [`POST /works.update`](/public/api-reference/works/update): - - Added documentation for stock priority values (`P0` through `P3`) - - Added documentation for stock sentiment values (`Delighted` through `Frustrated`) - - Added `x-devrev-uenum-overridable` and `x-devrev-uenum-values` extensions - -Note: Many of these changes involve adding better documentation and explicit enumerations for existing fields rather than changing the underlying functionality. \ No newline at end of file From 29ed9d5fadd9303480f27af8e104697fb010c24e Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Thu, 17 Apr 2025 16:56:43 -0700 Subject: [PATCH 05/22] avoid error with no response --- changelog.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.py b/changelog.py index 72d40fa5..561ce434 100644 --- a/changelog.py +++ b/changelog.py @@ -16,11 +16,11 @@ def main(vrn, d): print(f"Wrote prompt to {pr_file}.") print('Sending request to LLM.') - l = llm_client.get_lines_between_tags(llm_client.get_response(p), 'changelog') + l = llm_client.get_response(p) log_file = f"./fern/apis/{vrn}/changelog/{d}.md" if (l): with open(log_file, 'w', encoding="utf-8") as outfile: - outfile.write(l) + outfile.write(llm_client.get_lines_between_tags(l, 'changelog')) print(f"Wrote log to {log_file}.") else: print(f"Failed to generate {log_file}. No response from LLM.") From 0f028ff2b6f87a4f7b5521ace2352daabf62ba12 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Thu, 17 Apr 2025 16:59:00 -0700 Subject: [PATCH 06/22] Revert "removed to test" This reverts commit c12cb210e7ef2f9d97ba62c411843f21ced3c9a8. --- fern/apis/beta/changelog/2025-04-17.md | 47 ++++++++++++++++++++++++ fern/apis/public/changelog/2025-04-17.md | 46 +++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 fern/apis/beta/changelog/2025-04-17.md create mode 100644 fern/apis/public/changelog/2025-04-17.md diff --git a/fern/apis/beta/changelog/2025-04-17.md b/fern/apis/beta/changelog/2025-04-17.md new file mode 100644 index 00000000..a0fca431 --- /dev/null +++ b/fern/apis/beta/changelog/2025-04-17.md @@ -0,0 +1,47 @@ + +## New Endpoints + +### Service Accounts +- Added [`/service-accounts.create`](/beta/api-reference/service-accounts/create) for creating service accounts + +### Widgets +- Added [`/widgets.get`](/beta/api-reference/widgets/get-post) for retrieving widgets (GET and POST methods) + +## Modified Features + +### Schema Extensions +- Added `is_overridable` property to schema enum fields, affecting: + - Content templates + - Custom schemas + - Schema fragments + - Survey schemas + +### Survey Channels +- Enhanced documentation for `dispatched_channels` in surveys with detailed stock values for: + - `plug` (id: 1) + - `portal` (id: 2) + - `email` (id: 3) + - `slack` (id: 4) + +### AI Agent Responses +- Renamed `started` to `message_generation_started` in agent response events + +### Timeline Comments +- Added `references` property to timeline comment objects + +### Works Priority and Categories +- Added documentation for `priority_v2` enum values for works: + - `P0` through `P3` (ids 1-4, all overridable) + +- Added documentation for opportunity `forecast_category_v2` enum values: + - `Omitted` through `Won` (ids 1-6, all overridable) + +### Object Types +- Added new types `linkable` and `runnable` as valid values for: + - Article parts + - Object summary references + - Timeline entries + - Work items + - Linked items + +This changelog summarizes major API changes while preserving all endpoint URLs and critical details about schema modifications. \ No newline at end of file diff --git a/fern/apis/public/changelog/2025-04-17.md b/fern/apis/public/changelog/2025-04-17.md new file mode 100644 index 00000000..224d57ab --- /dev/null +++ b/fern/apis/public/changelog/2025-04-17.md @@ -0,0 +1,46 @@ + + +## New Endpoints + +### Service Accounts +- Added [`POST /service-accounts.create`](/public/api-reference/service-accounts/create) endpoint for creating service accounts + +## Modified Endpoints + +### AI Agent Response Events +- In [`POST /webhooks.event`](/public/api-reference/webhooks/event): + - Renamed event type from `started` to `message_generation_started` in `ai_agent_response` + +### Comments & Conversations +- Added `references` property to timeline comments, affecting: + - [`GET /atoms.get`](/public/api-reference/atoms/get-post) + - [`POST /atoms.get`](/public/api-reference/atoms/get-post) + - [`POST /conversations.create`](/public/api-reference/conversations/create) + - [`GET /conversations.get`](/public/api-reference/conversations/get-post) + - [`POST /conversations.get`](/public/api-reference/conversations/get-post) + - [`GET /conversations.list`](/public/api-reference/conversations/list-post) + - [`POST /conversations.list`](/public/api-reference/conversations/list-post) + - [`POST /conversations.update`](/public/api-reference/conversations/update) + - [`POST /timeline-entries.create`](/public/api-reference/timeline-entries/create) + - [`GET /timeline-entries.get`](/public/api-reference/timeline-entries/get-post) + - [`POST /timeline-entries.get`](/public/api-reference/timeline-entries/get-post) + - [`GET /timeline-entries.list`](/public/api-reference/timeline-entries/list-post) + - [`POST /timeline-entries.list`](/public/api-reference/timeline-entries/list-post) + - [`POST /timeline-entries.update`](/public/api-reference/timeline-entries/update) + +### Surveys +- Added documentation for stock allowed values and enhanced descriptions for: + - `dispatched_channels` in survey responses APIs: + - [`GET /surveys.responses.list`](/public/api-reference/surveys/responses-list-post) + - [`POST /surveys.responses.list`](/public/api-reference/surveys/responses-list-post) + - Added `is_overridable` property to schema enum field descriptors + +### Works +- Enhanced documentation for priority and sentiment enums in: + - [`POST /works.create`](/public/api-reference/works/create): Added documentation for stock priority values (`P0` through `P3`) + - [`POST /works.update`](/public/api-reference/works/update): + - Added documentation for stock priority values (`P0` through `P3`) + - Added documentation for stock sentiment values (`Delighted` through `Frustrated`) + - Added `x-devrev-uenum-overridable` and `x-devrev-uenum-values` extensions + +Note: Many of these changes involve adding better documentation and explicit enumerations for existing fields rather than changing the underlying functionality. \ No newline at end of file From 19bc746d0687f56f241bdc25dba1f1e5c121bc3a Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Thu, 17 Apr 2025 17:13:10 -0700 Subject: [PATCH 07/22] specify use of headings --- changelog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.py b/changelog.py index 561ce434..43c9b841 100644 --- a/changelog.py +++ b/changelog.py @@ -32,7 +32,7 @@ def gen_prompt(oasdiff, links, version): oasdiff = infile.read() prompt = f""" -Please provide an API changelog for the {version} API from the following OASDiff of OpenAPI spec changes. The output should be in markdown format grouping endpoints by use case/object type. For cases where some schema is modified, please also tell what endpoints it affects. Wherever an endpoint, property, or enum value is mentioned, surround it with backticks (`). Wherever an API is mentioned, include a hyperlink to the corresponding path from `` section. Place the changelog in a `` element in your response so I can parse it out. +Please provide an API changelog for the {version} API from the following OASDiff of OpenAPI spec changes. The output should be in markdown format grouping endpoints by use case/object type. For cases where some schema is modified, please also tell what endpoints it affects. Wherever an endpoint, property, or enum value is mentioned, surround it with backticks (`). Use only H2 and H3 headings. Wherever an API is mentioned, include a hyperlink to the corresponding path from `` section. Place the changelog in a `` element in your response so I can parse it out. {oasdiff} From bba4ae17b09f60b28a122498ca2df7d769cce685 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Fri, 18 Apr 2025 08:57:34 -0700 Subject: [PATCH 08/22] temperature = 0 --- llm_client.py | 1 + 1 file changed, 1 insertion(+) diff --git a/llm_client.py b/llm_client.py index f403c6bf..e55d0d50 100644 --- a/llm_client.py +++ b/llm_client.py @@ -9,6 +9,7 @@ def get_response(prompt): headers = {"Content-Type": "application/json", "Authorization": f"Bearer {auth}"} payload = { "model": "us.anthropic.claude-3-5-sonnet-20241022-v2:0", + "temperature": 0, "messages": [ { "role": "user", From 05350698388f509d5fd57af75f9f3ed15fd2a99f Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Fri, 18 Apr 2025 10:07:36 -0700 Subject: [PATCH 09/22] check for logs before continuing; use date of PR rather than current date --- .github/workflows/changelog.yml | 128 ++++++++++++++++++-------------- 1 file changed, 72 insertions(+), 56 deletions(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index e2a81b44..f9574af5 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -3,66 +3,82 @@ on: paths: - fern/apis/public/openapi-public.yaml - fern/apis/beta/openapi-beta.yaml - name: generate-changelog jobs: - get-diff: + check-logs: runs-on: ubuntu-latest - steps: - - name: Get current date - id: date - run: | - echo "DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV - - name: Check out repository content - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} - - name: Check out HEAD rev - uses: actions/checkout@v2 - with: - ref: ${{ github.head_ref }} - path: head - - name: Check out BASE rev - uses: actions/checkout@v2 - with: - ref: ${{ github.base_ref }} - path: base - - name: Create dir - run: | - mkdir -p temp/beta temp/public - - name: Running public OpenAPI Spec diff action - uses: oasdiff/oasdiff-action/diff@main - with: - base: 'base/fern/apis/public/openapi-public.yaml' - revision: 'head/fern/apis/public/openapi-public.yaml' - format: text - output-to-file: 'temp/public/${{ env.DATE }}_oasdiff.md' - - name: Running beta OpenAPI Spec diff action - uses: oasdiff/oasdiff-action/diff@main - with: - base: 'base/fern/apis/beta/openapi-beta.yaml' - revision: 'head/fern/apis/beta/openapi-beta.yaml' - format: text - output-to-file: 'temp/beta/${{ env.DATE }}_oasdiff.md' - - name: Archive changelogs - uses: actions/upload-artifact@v4 - with: - name: changelog-${{ env.DATE }} - path: temp/** - - name: Prompt - env: - LLM_JWT: ${{ secrets.LLM_JWT }} - run: | - logfiles="fern/apis/*/changelog/${{ env.DATE }}.md" + outputs: + date: ${{ steps.date.outputs.date }} + should_continue: ${{ steps.check.outputs.should_continue }} + steps: + - name: Get current date + id: date + env: + PR_NUMBER: ${{ github.event.number }} + run: | + DATE=$(gh pr view ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) + echo "date=$DATE" >> $GITHUB_OUTPUT + - name: Check out repository + uses: actions/checkout@v2 + - name: Check for existing logs + id: check + run: | + if ls fern/apis/*/changelog/${{ steps.date.outputs.date }}.md >/dev/null 2>&1; then + echo "Log files already exist, stopping workflow" + echo "should_continue=false" >> $GITHUB_OUTPUT + else + echo "No existing log files found, continuing workflow" + echo "should_continue=true" >> $GITHUB_OUTPUT + fi - if ls $logfiles >/dev/null 2>&1; then - logfiles=($logfiles) - echo "${logfiles[@]} already exist." - else - python changelog.py --date ${{ env.DATE }} + generate-diff: + needs: check-logs + if: needs.check-logs.outputs.should_continue == 'true' + runs-on: ubuntu-latest + steps: + - name: Check out repository content + uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.ref }} + - name: Check out HEAD rev + uses: actions/checkout@v2 + with: + ref: ${{ github.head_ref }} + path: head + - name: Check out BASE rev + uses: actions/checkout@v2 + with: + ref: ${{ github.base_ref }} + path: base + - name: Create dir + run: | + mkdir -p temp/beta temp/public + - name: Running public OpenAPI Spec diff action + uses: oasdiff/oasdiff-action/diff@main + with: + base: 'base/fern/apis/public/openapi-public.yaml' + revision: 'head/fern/apis/public/openapi-public.yaml' + format: text + output-to-file: 'temp/public/${{ needs.check-logs.outputs.date }}_oasdiff.md' + - name: Running beta OpenAPI Spec diff action + uses: oasdiff/oasdiff-action/diff@main + with: + base: 'base/fern/apis/beta/openapi-beta.yaml' + revision: 'head/fern/apis/beta/openapi-beta.yaml' + format: text + output-to-file: 'temp/beta/${{ needs.check-logs.outputs.date }}_oasdiff.md' + - name: Archive changelogs + uses: actions/upload-artifact@v4 + with: + name: changelog-${{ needs.check-logs.outputs.date }} + path: temp/** + - name: Generate and commit changelog + env: + LLM_JWT: ${{ secrets.LLM_JWT }} + run: | + python changelog.py --date ${{ needs.check-logs.outputs.date }} git config user.name github-actions git config user.email github-actions@github.com - git add fern/apis/*/changelog/${{ env.DATE }}.md + git add fern/apis/*/changelog/${{ needs.check-logs.outputs.date }}.md git commit -m "generated by Claude" - git push - fi + git push \ No newline at end of file From 27b7c0e7f7c4464cff74317079d5cde0bb5d105f Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Fri, 18 Apr 2025 10:18:37 -0700 Subject: [PATCH 10/22] fix date --- .github/workflows/changelog.yml | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index f9574af5..940426b3 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -17,24 +17,27 @@ jobs: PR_NUMBER: ${{ github.event.number }} run: | DATE=$(gh pr view ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) - echo "date=$DATE" >> $GITHUB_OUTPUT + echo "date=$DATE" >> "$GITHUB_OUTPUT" + echo "DATE=$DATE" >> "$GITHUB_ENV" - name: Check out repository uses: actions/checkout@v2 - name: Check for existing logs id: check run: | - if ls fern/apis/*/changelog/${{ steps.date.outputs.date }}.md >/dev/null 2>&1; then + if ls fern/apis/*/changelog/${{ env.DATE }}.md >/dev/null 2>&1; then echo "Log files already exist, stopping workflow" - echo "should_continue=false" >> $GITHUB_OUTPUT + echo "should_continue=false" >> "$GITHUB_OUTPUT" else echo "No existing log files found, continuing workflow" - echo "should_continue=true" >> $GITHUB_OUTPUT + echo "should_continue=true" >> "$GITHUB_OUTPUT" fi generate-diff: needs: check-logs if: needs.check-logs.outputs.should_continue == 'true' runs-on: ubuntu-latest + env: + DATE: ${{ needs.check-logs.outputs.date }} steps: - name: Check out repository content uses: actions/checkout@v2 @@ -59,26 +62,26 @@ jobs: base: 'base/fern/apis/public/openapi-public.yaml' revision: 'head/fern/apis/public/openapi-public.yaml' format: text - output-to-file: 'temp/public/${{ needs.check-logs.outputs.date }}_oasdiff.md' + output-to-file: 'temp/public/${{ env.DATE }}_oasdiff.md' - name: Running beta OpenAPI Spec diff action uses: oasdiff/oasdiff-action/diff@main with: base: 'base/fern/apis/beta/openapi-beta.yaml' revision: 'head/fern/apis/beta/openapi-beta.yaml' format: text - output-to-file: 'temp/beta/${{ needs.check-logs.outputs.date }}_oasdiff.md' + output-to-file: 'temp/beta/${{ env.DATE }}_oasdiff.md' - name: Archive changelogs uses: actions/upload-artifact@v4 with: - name: changelog-${{ needs.check-logs.outputs.date }} + name: changelog-${{ env.DATE }} path: temp/** - name: Generate and commit changelog env: LLM_JWT: ${{ secrets.LLM_JWT }} run: | - python changelog.py --date ${{ needs.check-logs.outputs.date }} + python changelog.py --date ${{ env.DATE }} git config user.name github-actions git config user.email github-actions@github.com - git add fern/apis/*/changelog/${{ needs.check-logs.outputs.date }}.md + git add fern/apis/*/changelog/${{ env.DATE }}.md git commit -m "generated by Claude" git push \ No newline at end of file From c4c8cc98f3a1df8091c297bf8016f209d8f55ac0 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Fri, 18 Apr 2025 10:28:58 -0700 Subject: [PATCH 11/22] another date fix --- .github/workflows/changelog.yml | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 940426b3..444e0234 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -8,37 +8,45 @@ jobs: check-logs: runs-on: ubuntu-latest outputs: - date: ${{ steps.date.outputs.date }} + date: ${{ steps.get_date.outputs.date }} should_continue: ${{ steps.check.outputs.should_continue }} steps: - name: Get current date - id: date + id: get_date env: PR_NUMBER: ${{ github.event.number }} run: | DATE=$(gh pr view ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) - echo "date=$DATE" >> "$GITHUB_OUTPUT" - echo "DATE=$DATE" >> "$GITHUB_ENV" + echo "Got date: $DATE" + echo "date=$DATE" >> $GITHUB_OUTPUT + - name: Debug date output + run: | + echo "Date output: ${{ steps.get_date.outputs.date }}" - name: Check out repository uses: actions/checkout@v2 - name: Check for existing logs id: check run: | - if ls fern/apis/*/changelog/${{ env.DATE }}.md >/dev/null 2>&1; then + if ls fern/apis/*/changelog/${{ steps.get_date.outputs.date }}.md >/dev/null 2>&1; then echo "Log files already exist, stopping workflow" - echo "should_continue=false" >> "$GITHUB_OUTPUT" + echo "should_continue=false" >> $GITHUB_OUTPUT else echo "No existing log files found, continuing workflow" - echo "should_continue=true" >> "$GITHUB_OUTPUT" + echo "should_continue=true" >> $GITHUB_OUTPUT fi generate-diff: needs: check-logs if: needs.check-logs.outputs.should_continue == 'true' runs-on: ubuntu-latest - env: - DATE: ${{ needs.check-logs.outputs.date }} steps: + - name: Set date + run: | + echo "DATE=${{ needs.check-logs.outputs.date }}" >> $GITHUB_ENV + - name: Debug date + run: | + echo "Date from previous job: ${{ needs.check-logs.outputs.date }}" + echo "Date from env: ${{ env.DATE }}" - name: Check out repository content uses: actions/checkout@v2 with: From b16041074da0c60f888ee638c0dc3123b5af0e85 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Fri, 18 Apr 2025 13:37:31 -0700 Subject: [PATCH 12/22] reverting --- .github/workflows/changelog.yml | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 444e0234..f9574af5 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -8,26 +8,22 @@ jobs: check-logs: runs-on: ubuntu-latest outputs: - date: ${{ steps.get_date.outputs.date }} + date: ${{ steps.date.outputs.date }} should_continue: ${{ steps.check.outputs.should_continue }} steps: - name: Get current date - id: get_date + id: date env: PR_NUMBER: ${{ github.event.number }} run: | DATE=$(gh pr view ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) - echo "Got date: $DATE" echo "date=$DATE" >> $GITHUB_OUTPUT - - name: Debug date output - run: | - echo "Date output: ${{ steps.get_date.outputs.date }}" - name: Check out repository uses: actions/checkout@v2 - name: Check for existing logs id: check run: | - if ls fern/apis/*/changelog/${{ steps.get_date.outputs.date }}.md >/dev/null 2>&1; then + if ls fern/apis/*/changelog/${{ steps.date.outputs.date }}.md >/dev/null 2>&1; then echo "Log files already exist, stopping workflow" echo "should_continue=false" >> $GITHUB_OUTPUT else @@ -40,13 +36,6 @@ jobs: if: needs.check-logs.outputs.should_continue == 'true' runs-on: ubuntu-latest steps: - - name: Set date - run: | - echo "DATE=${{ needs.check-logs.outputs.date }}" >> $GITHUB_ENV - - name: Debug date - run: | - echo "Date from previous job: ${{ needs.check-logs.outputs.date }}" - echo "Date from env: ${{ env.DATE }}" - name: Check out repository content uses: actions/checkout@v2 with: @@ -70,26 +59,26 @@ jobs: base: 'base/fern/apis/public/openapi-public.yaml' revision: 'head/fern/apis/public/openapi-public.yaml' format: text - output-to-file: 'temp/public/${{ env.DATE }}_oasdiff.md' + output-to-file: 'temp/public/${{ needs.check-logs.outputs.date }}_oasdiff.md' - name: Running beta OpenAPI Spec diff action uses: oasdiff/oasdiff-action/diff@main with: base: 'base/fern/apis/beta/openapi-beta.yaml' revision: 'head/fern/apis/beta/openapi-beta.yaml' format: text - output-to-file: 'temp/beta/${{ env.DATE }}_oasdiff.md' + output-to-file: 'temp/beta/${{ needs.check-logs.outputs.date }}_oasdiff.md' - name: Archive changelogs uses: actions/upload-artifact@v4 with: - name: changelog-${{ env.DATE }} + name: changelog-${{ needs.check-logs.outputs.date }} path: temp/** - name: Generate and commit changelog env: LLM_JWT: ${{ secrets.LLM_JWT }} run: | - python changelog.py --date ${{ env.DATE }} + python changelog.py --date ${{ needs.check-logs.outputs.date }} git config user.name github-actions git config user.email github-actions@github.com - git add fern/apis/*/changelog/${{ env.DATE }}.md + git add fern/apis/*/changelog/${{ needs.check-logs.outputs.date }}.md git commit -m "generated by Claude" git push \ No newline at end of file From 6505608630996d8282e9ff073e64ebf0ebb730b7 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Mon, 21 Apr 2025 08:23:00 -0700 Subject: [PATCH 13/22] revert file checking --- .github/workflows/changelog.yml | 131 ++++++++++++++------------------ 1 file changed, 59 insertions(+), 72 deletions(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index f9574af5..3381f972 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -3,82 +3,69 @@ on: paths: - fern/apis/public/openapi-public.yaml - fern/apis/beta/openapi-beta.yaml + name: generate-changelog jobs: - check-logs: - runs-on: ubuntu-latest - outputs: - date: ${{ steps.date.outputs.date }} - should_continue: ${{ steps.check.outputs.should_continue }} - steps: - - name: Get current date - id: date - env: - PR_NUMBER: ${{ github.event.number }} - run: | - DATE=$(gh pr view ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) - echo "date=$DATE" >> $GITHUB_OUTPUT - - name: Check out repository - uses: actions/checkout@v2 - - name: Check for existing logs - id: check - run: | - if ls fern/apis/*/changelog/${{ steps.date.outputs.date }}.md >/dev/null 2>&1; then - echo "Log files already exist, stopping workflow" - echo "should_continue=false" >> $GITHUB_OUTPUT - else - echo "No existing log files found, continuing workflow" - echo "should_continue=true" >> $GITHUB_OUTPUT - fi - - generate-diff: - needs: check-logs - if: needs.check-logs.outputs.should_continue == 'true' + get-diff: runs-on: ubuntu-latest - steps: - - name: Check out repository content - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} - - name: Check out HEAD rev - uses: actions/checkout@v2 - with: - ref: ${{ github.head_ref }} - path: head - - name: Check out BASE rev - uses: actions/checkout@v2 - with: - ref: ${{ github.base_ref }} - path: base - - name: Create dir - run: | - mkdir -p temp/beta temp/public - - name: Running public OpenAPI Spec diff action - uses: oasdiff/oasdiff-action/diff@main - with: - base: 'base/fern/apis/public/openapi-public.yaml' - revision: 'head/fern/apis/public/openapi-public.yaml' - format: text - output-to-file: 'temp/public/${{ needs.check-logs.outputs.date }}_oasdiff.md' - - name: Running beta OpenAPI Spec diff action - uses: oasdiff/oasdiff-action/diff@main - with: - base: 'base/fern/apis/beta/openapi-beta.yaml' - revision: 'head/fern/apis/beta/openapi-beta.yaml' - format: text - output-to-file: 'temp/beta/${{ needs.check-logs.outputs.date }}_oasdiff.md' - - name: Archive changelogs - uses: actions/upload-artifact@v4 - with: - name: changelog-${{ needs.check-logs.outputs.date }} - path: temp/** - - name: Generate and commit changelog - env: + steps: + - name: Get current date + id: date + env: + PR_NUMBER: ${{ github.event.number }} + run: | + DATE=$(gh pr view ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) + echo "date=$DATE" >> $GITHUB_OUTPUT + - name: Check out repository content + uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.ref }} + - name: Check out HEAD rev + uses: actions/checkout@v2 + with: + ref: ${{ github.head_ref }} + path: head + - name: Check out BASE rev + uses: actions/checkout@v2 + with: + ref: ${{ github.base_ref }} + path: base + - name: Create dir + run: | + mkdir -p temp/beta temp/public + - name: Running public OpenAPI Spec diff action + uses: oasdiff/oasdiff-action/diff@main + with: + base: 'base/fern/apis/public/openapi-public.yaml' + revision: 'head/fern/apis/public/openapi-public.yaml' + format: text + output-to-file: 'temp/public/${{ env.DATE }}_oasdiff.md' + - name: Running beta OpenAPI Spec diff action + uses: oasdiff/oasdiff-action/diff@main + with: + base: 'base/fern/apis/beta/openapi-beta.yaml' + revision: 'head/fern/apis/beta/openapi-beta.yaml' + format: text + output-to-file: 'temp/beta/${{ env.DATE }}_oasdiff.md' + - name: Archive changelogs + uses: actions/upload-artifact@v4 + with: + name: changelog-${{ env.DATE }} + path: temp/** + - name: Prompt + env: LLM_JWT: ${{ secrets.LLM_JWT }} - run: | - python changelog.py --date ${{ needs.check-logs.outputs.date }} + run: | + logfiles="fern/apis/*/changelog/${{ env.DATE }}.md" + + if ls $logfiles >/dev/null 2>&1; then + logfiles=($logfiles) + echo "${logfiles[@]} already exist." + else + python changelog.py --date ${{ env.DATE }} git config user.name github-actions git config user.email github-actions@github.com - git add fern/apis/*/changelog/${{ needs.check-logs.outputs.date }}.md + git add fern/apis/*/changelog/${{ env.DATE }}.md git commit -m "generated by Claude" - git push \ No newline at end of file + git push + fi From b5fbaa31f9f7a5fd11cf2c5346dbe86c2e2b0630 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Mon, 21 Apr 2025 08:25:14 -0700 Subject: [PATCH 14/22] env var name fix --- .github/workflows/changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 3381f972..d3dff8af 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -15,7 +15,7 @@ jobs: PR_NUMBER: ${{ github.event.number }} run: | DATE=$(gh pr view ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) - echo "date=$DATE" >> $GITHUB_OUTPUT + echo "DATE=$DATE" >> $GITHUB_OUTPUT - name: Check out repository content uses: actions/checkout@v2 with: From b589afe8349124687bf4f4b7a1ee2d9b20dd7ae4 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Mon, 21 Apr 2025 08:27:06 -0700 Subject: [PATCH 15/22] set token --- .github/workflows/changelog.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index d3dff8af..70e6d980 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -12,6 +12,7 @@ jobs: - name: Get current date id: date env: + GH_TOKEN: ${{ github.token }} PR_NUMBER: ${{ github.event.number }} run: | DATE=$(gh pr view ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) From 7dd4d422029c86ec620caeb5f33d59fa2cdf63bf Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Mon, 21 Apr 2025 08:33:57 -0700 Subject: [PATCH 16/22] specify repo --- .github/workflows/changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 70e6d980..a492b236 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -15,7 +15,7 @@ jobs: GH_TOKEN: ${{ github.token }} PR_NUMBER: ${{ github.event.number }} run: | - DATE=$(gh pr view ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) + DATE=$(gh pr view --repo ${{ github.event.repository.name }} ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) echo "DATE=$DATE" >> $GITHUB_OUTPUT - name: Check out repository content uses: actions/checkout@v2 From a720570e95aa2b21c23b5b7bc8b4cc9cf999f9cc Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Mon, 21 Apr 2025 08:35:27 -0700 Subject: [PATCH 17/22] repo --- .github/workflows/changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index a492b236..298541f2 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -15,7 +15,7 @@ jobs: GH_TOKEN: ${{ github.token }} PR_NUMBER: ${{ github.event.number }} run: | - DATE=$(gh pr view --repo ${{ github.event.repository.name }} ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) + DATE=$(gh pr view --repo https://github.com/devrev/fern-api-docs ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) echo "DATE=$DATE" >> $GITHUB_OUTPUT - name: Check out repository content uses: actions/checkout@v2 From 962f42616b7aca21c1a821f7e4a7bfcc282d8678 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Mon, 21 Apr 2025 08:39:31 -0700 Subject: [PATCH 18/22] debug --- .github/workflows/changelog.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 298541f2..9e794d7c 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -16,6 +16,7 @@ jobs: PR_NUMBER: ${{ github.event.number }} run: | DATE=$(gh pr view --repo https://github.com/devrev/fern-api-docs ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) + echo "Date PR opened is $DATE" echo "DATE=$DATE" >> $GITHUB_OUTPUT - name: Check out repository content uses: actions/checkout@v2 From 5f9fa769e5078e622fe0f1d6bbcd153f1804c6f6 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Mon, 21 Apr 2025 08:45:27 -0700 Subject: [PATCH 19/22] debug2 --- .github/workflows/changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 9e794d7c..5f814398 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -16,8 +16,8 @@ jobs: PR_NUMBER: ${{ github.event.number }} run: | DATE=$(gh pr view --repo https://github.com/devrev/fern-api-docs ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) - echo "Date PR opened is $DATE" echo "DATE=$DATE" >> $GITHUB_OUTPUT + echo "Date PR opened is ${{ env.DATE }}" - name: Check out repository content uses: actions/checkout@v2 with: From 8a5b3f0f51b59592d155ead7df5fceb784a33b58 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Mon, 21 Apr 2025 08:48:13 -0700 Subject: [PATCH 20/22] target --- .github/workflows/changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 5f814398..714cda06 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -16,7 +16,7 @@ jobs: PR_NUMBER: ${{ github.event.number }} run: | DATE=$(gh pr view --repo https://github.com/devrev/fern-api-docs ${{ env.PR_NUMBER }} --json createdAt --jq .[] | cut -d 'T' -f 1) - echo "DATE=$DATE" >> $GITHUB_OUTPUT + echo "DATE=$DATE" >> $GITHUB_ENV echo "Date PR opened is ${{ env.DATE }}" - name: Check out repository content uses: actions/checkout@v2 From 32f60c12b417edf6d9884042cf874f9b0e5a41f4 Mon Sep 17 00:00:00 2001 From: Ben Colborn Date: Tue, 22 Apr 2025 12:03:01 -0700 Subject: [PATCH 21/22] better error handling --- llm_client.py | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/llm_client.py b/llm_client.py index e55d0d50..f95a8e5b 100644 --- a/llm_client.py +++ b/llm_client.py @@ -17,15 +17,37 @@ def get_response(prompt): } ] } - try: r = requests.post('https://openwebui.dev.devrev-eng.ai/api/chat/completions', json=payload, - headers=headers) - response = r.json()['choices'][0]['message']['content'] - response = re.sub(r"^# .*\n?", '', response, flags=re.MULTILINE) + headers=headers) + r.raise_for_status() + + if not r.text: + raise ValueError("Empty response received from API") + json_response = r.json() + if not json_response.get('choices'): + raise ValueError("No 'choices' field in response") + if not json_response['choices'][0].get('message'): + raise ValueError("No 'message' field in response") + if not json_response['choices'][0]['message'].get('content'): + raise ValueError("No 'content' field in response") + + response = json_response['choices'][0]['message']['content'] + + # Check if final response is empty + if not response: + raise ValueError("Empty content received from API") + return response + + except requests.RequestException as e: + print(f"HTTP request failed. Error: {type(e)} {e}") + return None + except ValueError as e: + print(f"Invalid response received. Error: {e}") + return None except Exception as e: - print(f"Failed to generate changelog. Error: {type(e)} {e} {r}") + print(f"Failed to generate response. Error: {type(e)} {e}") return None def get_lines_between_tags(text, tag): From 6a3305972a850ea5155a4adde44cd678488ce67a Mon Sep 17 00:00:00 2001 From: Brian Byrne Date: Thu, 24 Apr 2025 13:34:38 -0700 Subject: [PATCH 22/22] + update changelogs + date --- fern/apis/beta/changelog/2025-04-17.md | 47 ------------------------ fern/apis/beta/changelog/2025-04-24.md | 19 ++++++++++ fern/apis/public/changelog/2025-04-17.md | 46 ----------------------- fern/apis/public/changelog/2025-04-24.md | 13 +++++++ 4 files changed, 32 insertions(+), 93 deletions(-) delete mode 100644 fern/apis/beta/changelog/2025-04-17.md create mode 100644 fern/apis/beta/changelog/2025-04-24.md delete mode 100644 fern/apis/public/changelog/2025-04-17.md create mode 100644 fern/apis/public/changelog/2025-04-24.md diff --git a/fern/apis/beta/changelog/2025-04-17.md b/fern/apis/beta/changelog/2025-04-17.md deleted file mode 100644 index a0fca431..00000000 --- a/fern/apis/beta/changelog/2025-04-17.md +++ /dev/null @@ -1,47 +0,0 @@ - -## New Endpoints - -### Service Accounts -- Added [`/service-accounts.create`](/beta/api-reference/service-accounts/create) for creating service accounts - -### Widgets -- Added [`/widgets.get`](/beta/api-reference/widgets/get-post) for retrieving widgets (GET and POST methods) - -## Modified Features - -### Schema Extensions -- Added `is_overridable` property to schema enum fields, affecting: - - Content templates - - Custom schemas - - Schema fragments - - Survey schemas - -### Survey Channels -- Enhanced documentation for `dispatched_channels` in surveys with detailed stock values for: - - `plug` (id: 1) - - `portal` (id: 2) - - `email` (id: 3) - - `slack` (id: 4) - -### AI Agent Responses -- Renamed `started` to `message_generation_started` in agent response events - -### Timeline Comments -- Added `references` property to timeline comment objects - -### Works Priority and Categories -- Added documentation for `priority_v2` enum values for works: - - `P0` through `P3` (ids 1-4, all overridable) - -- Added documentation for opportunity `forecast_category_v2` enum values: - - `Omitted` through `Won` (ids 1-6, all overridable) - -### Object Types -- Added new types `linkable` and `runnable` as valid values for: - - Article parts - - Object summary references - - Timeline entries - - Work items - - Linked items - -This changelog summarizes major API changes while preserving all endpoint URLs and critical details about schema modifications. \ No newline at end of file diff --git a/fern/apis/beta/changelog/2025-04-24.md b/fern/apis/beta/changelog/2025-04-24.md new file mode 100644 index 00000000..349f7a13 --- /dev/null +++ b/fern/apis/beta/changelog/2025-04-24.md @@ -0,0 +1,19 @@ + +## New Endpoints + +### Service Accounts +- Added [`POST /service-accounts.create`](/beta/api-reference/service-accounts/create) for creating service accounts + +### Widgets +- Added [`GET /widgets.get`](/beta/api-reference/widgets/get) for retrieving widgets + +## Modified Features + +### Customization +- Added `is_overridable` property to schema enum fields + +### Timeline +- Added `references` property to timeline comments + +### Parts +- Added support for part types `linkable` and `runnable` diff --git a/fern/apis/public/changelog/2025-04-17.md b/fern/apis/public/changelog/2025-04-17.md deleted file mode 100644 index 224d57ab..00000000 --- a/fern/apis/public/changelog/2025-04-17.md +++ /dev/null @@ -1,46 +0,0 @@ - - -## New Endpoints - -### Service Accounts -- Added [`POST /service-accounts.create`](/public/api-reference/service-accounts/create) endpoint for creating service accounts - -## Modified Endpoints - -### AI Agent Response Events -- In [`POST /webhooks.event`](/public/api-reference/webhooks/event): - - Renamed event type from `started` to `message_generation_started` in `ai_agent_response` - -### Comments & Conversations -- Added `references` property to timeline comments, affecting: - - [`GET /atoms.get`](/public/api-reference/atoms/get-post) - - [`POST /atoms.get`](/public/api-reference/atoms/get-post) - - [`POST /conversations.create`](/public/api-reference/conversations/create) - - [`GET /conversations.get`](/public/api-reference/conversations/get-post) - - [`POST /conversations.get`](/public/api-reference/conversations/get-post) - - [`GET /conversations.list`](/public/api-reference/conversations/list-post) - - [`POST /conversations.list`](/public/api-reference/conversations/list-post) - - [`POST /conversations.update`](/public/api-reference/conversations/update) - - [`POST /timeline-entries.create`](/public/api-reference/timeline-entries/create) - - [`GET /timeline-entries.get`](/public/api-reference/timeline-entries/get-post) - - [`POST /timeline-entries.get`](/public/api-reference/timeline-entries/get-post) - - [`GET /timeline-entries.list`](/public/api-reference/timeline-entries/list-post) - - [`POST /timeline-entries.list`](/public/api-reference/timeline-entries/list-post) - - [`POST /timeline-entries.update`](/public/api-reference/timeline-entries/update) - -### Surveys -- Added documentation for stock allowed values and enhanced descriptions for: - - `dispatched_channels` in survey responses APIs: - - [`GET /surveys.responses.list`](/public/api-reference/surveys/responses-list-post) - - [`POST /surveys.responses.list`](/public/api-reference/surveys/responses-list-post) - - Added `is_overridable` property to schema enum field descriptors - -### Works -- Enhanced documentation for priority and sentiment enums in: - - [`POST /works.create`](/public/api-reference/works/create): Added documentation for stock priority values (`P0` through `P3`) - - [`POST /works.update`](/public/api-reference/works/update): - - Added documentation for stock priority values (`P0` through `P3`) - - Added documentation for stock sentiment values (`Delighted` through `Frustrated`) - - Added `x-devrev-uenum-overridable` and `x-devrev-uenum-values` extensions - -Note: Many of these changes involve adding better documentation and explicit enumerations for existing fields rather than changing the underlying functionality. \ No newline at end of file diff --git a/fern/apis/public/changelog/2025-04-24.md b/fern/apis/public/changelog/2025-04-24.md new file mode 100644 index 00000000..413df314 --- /dev/null +++ b/fern/apis/public/changelog/2025-04-24.md @@ -0,0 +1,13 @@ + +## New Endpoints + +### Service Accounts +- Added [`POST /service-accounts.create`](/public/api-reference/service-accounts/create) for creating service accounts + +## Modified Endpoints + +### Customization +- Added `is_overridable` property to schema enum fields + +### Timeline +- Added `references` property to timeline comments