openapi: 3.2.0 info: title: GPT Backend Change Management API version: 0.1.0 servers: - url: https://api.usepomo.ai description: Base URL declared by the provider in apis.yml (roadmap#122). tags: - name: change-management paths: /api/change-management/settings: get: tags: - change-management summary: Get Settings operationId: get_settings_api_change_management_settings_get security: - HTTPBearer: [] parameters: - name: force_refresh in: query required: false schema: type: boolean description: Bypass the shared response cache default: false title: Force Refresh description: Bypass the shared response cache - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ChangeManagementSettingsResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - change-management summary: Update Settings operationId: update_settings_api_change_management_settings_put security: - HTTPBearer: [] parameters: - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChangeManagementSettingsUpdateRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ChangeManagementSettingsResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/change-management/approval-groups: get: tags: - change-management summary: Get Approval Groups operationId: get_approval_groups_api_change_management_approval_groups_get security: - HTTPBearer: [] parameters: - name: force_refresh in: query required: false schema: type: boolean description: Bypass the shared response cache default: false title: Force Refresh description: Bypass the shared response cache - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/ApprovalGroupResponse' title: Response Get Approval Groups Api Change Management Approval Groups Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - change-management summary: Create Approval Group operationId: create_approval_group_api_change_management_approval_groups_post security: - HTTPBearer: [] parameters: - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApprovalGroupCreateRequest' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApprovalGroupResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/change-management/approval-groups/{group_id}: put: tags: - change-management summary: Update Approval Group operationId: update_approval_group_api_change_management_approval_groups__group_id__put security: - HTTPBearer: [] parameters: - name: group_id in: path required: true schema: type: string format: uuid title: Group Id - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApprovalGroupUpdateRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApprovalGroupResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - change-management summary: Delete Approval Group operationId: delete_approval_group_api_change_management_approval_groups__group_id__delete security: - HTTPBearer: [] parameters: - name: group_id in: path required: true schema: type: string format: uuid title: Group Id - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id responses: '200': description: Successful Response content: application/json: schema: type: 'null' title: Response Delete Approval Group Api Change Management Approval Groups Group Id Delete '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/change-management/approval-groups/{group_id}/members: put: tags: - change-management summary: Set Approval Group Members operationId: set_approval_group_members_api_change_management_approval_groups__group_id__members_put security: - HTTPBearer: [] parameters: - name: group_id in: path required: true schema: type: string format: uuid title: Group Id - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApprovalGroupSetMembersRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ApprovalGroupResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/change-management/requests: post: tags: - change-management summary: Create Request operationId: create_request_api_change_management_requests_post security: - HTTPBearer: [] parameters: - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChangeRequestCreateRequest' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ChangeRequestResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - change-management summary: List Requests operationId: list_requests_api_change_management_requests_get security: - HTTPBearer: [] parameters: - name: limit in: query required: false schema: type: integer maximum: 200 minimum: 1 default: 50 title: Limit - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/ChangeRequestResponse' title: Response List Requests Api Change Management Requests Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/change-management/requests/summary: get: tags: - change-management summary: Get Requests Summary operationId: get_requests_summary_api_change_management_requests_summary_get security: - HTTPBearer: [] parameters: - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ChangeRequestSummaryResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/change-management/requests/{change_request_id}: get: tags: - change-management summary: Get Request operationId: get_request_api_change_management_requests__change_request_id__get security: - HTTPBearer: [] parameters: - name: change_request_id in: path required: true schema: type: string format: uuid title: Change Request Id - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ChangeRequestResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/change-management/requests/{change_request_id}/preview: get: tags: - change-management summary: Get Request Preview operationId: get_request_preview_api_change_management_requests__change_request_id__preview_get security: - HTTPBearer: [] parameters: - name: change_request_id in: path required: true schema: type: string format: uuid title: Change Request Id - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ChangeRequestPreviewResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/change-management/requests/{change_request_id}/approvals: post: tags: - change-management summary: Approve Request operationId: approve_request_api_change_management_requests__change_request_id__approvals_post security: - HTTPBearer: [] parameters: - name: change_request_id in: path required: true schema: type: string format: uuid title: Change Request Id - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChangeRequestApproveRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ChangeRequestResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/change-management/requests/{change_request_id}/execute: post: tags: - change-management summary: Execute Request operationId: execute_request_api_change_management_requests__change_request_id__execute_post security: - HTTPBearer: [] parameters: - name: change_request_id in: path required: true schema: type: string format: uuid title: Change Request Id - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id requestBody: content: application/json: schema: anyOf: - $ref: '#/components/schemas/ChangeRequestExecuteRequest' - type: 'null' title: Payload responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/JobResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError ChangeRequestCommentResponse: properties: id: type: string title: Id author_user_id: anyOf: - type: string - type: 'null' title: Author User Id author_name: anyOf: - type: string - type: 'null' title: Author Name author_email: anyOf: - type: string - type: 'null' title: Author Email kind: type: string title: Kind message: anyOf: - type: string - type: 'null' title: Message decision: anyOf: - type: string - type: 'null' title: Decision source_approval_id: anyOf: - type: string - type: 'null' title: Source Approval Id created_at: type: string format: date-time title: Created At type: object required: - id - kind - created_at title: ChangeRequestCommentResponse ApprovalGroupUpdateRequest: properties: name: anyOf: - type: string maxLength: 100 minLength: 1 - type: 'null' title: Name description: anyOf: - type: string maxLength: 2000 - type: 'null' title: Description type: object title: ApprovalGroupUpdateRequest ApprovalGroupMemberResponse: properties: user_id: type: string title: User Id created_at: type: string format: date-time title: Created At type: object required: - user_id - created_at title: ApprovalGroupMemberResponse ChangeManagementSettingsResponse: properties: enabled: type: boolean title: Enabled default: false enforce_writes: type: boolean title: Enforce Writes default: false budget_guardrail: $ref: '#/components/schemas/BudgetGuardrailConfig' type: object title: ChangeManagementSettingsResponse ChangeOperationExecuteOverride: properties: operation_id: type: string title: Operation Id job_data: anyOf: - additionalProperties: true type: object - type: 'null' title: Job Data type: object required: - operation_id title: ChangeOperationExecuteOverride ApprovalGroupSetMembersRequest: properties: user_ids: items: type: string type: array title: User Ids type: object title: ApprovalGroupSetMembersRequest JobResponse: properties: job_id: type: string title: Job Id description: Unique job identifier status: type: string title: Status description: Initial job status (typically 'running') stream_url: type: string title: Stream Url description: SSE endpoint for real-time progress poll_url: type: string title: Poll Url description: HTTP endpoint for polling status type: object required: - job_id - status - stream_url - poll_url title: JobResponse description: Response after submitting a job example: job_id: 987fcdeb-51a2-43f7-9876-543210987654 poll_url: /api/chat/agentic/jobs/987fcdeb-51a2-43f7-9876-543210987654 status: running stream_url: /api/chat/agentic/jobs/987fcdeb-51a2-43f7-9876-543210987654/stream ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError ChangeOperationCreateRequest: properties: kind: type: string maxLength: 50 minLength: 1 title: Kind title: anyOf: - type: string maxLength: 300 - type: 'null' title: Title tool_name: anyOf: - type: string maxLength: 200 - type: 'null' title: Tool Name tool_arguments: anyOf: - additionalProperties: true type: object - type: 'null' title: Tool Arguments job_type: anyOf: - type: string maxLength: 200 - type: 'null' title: Job Type job_data: anyOf: - additionalProperties: true type: object - type: 'null' title: Job Data diff: anyOf: - additionalProperties: true type: object - type: 'null' title: Diff type: object required: - kind title: ChangeOperationCreateRequest ChangeRequestSummaryResponse: properties: enabled: type: boolean title: Enabled enforce_writes: type: boolean title: Enforce Writes pending_total: type: integer title: Pending Total awaiting_my_review: type: integer title: Awaiting My Review is_approver: type: boolean title: Is Approver type: object required: - enabled - enforce_writes - pending_total - awaiting_my_review - is_approver title: ChangeRequestSummaryResponse ChangeRequestCreateRequest: properties: company_profile_id: anyOf: - type: string - type: 'null' title: Company Profile Id source: type: string maxLength: 50 title: Source default: manual title: type: string maxLength: 300 minLength: 1 title: Title description: anyOf: - type: string maxLength: 5000 - type: 'null' title: Description risk_score: type: integer maximum: 100.0 minimum: 0.0 title: Risk Score default: 0 risk_factors: anyOf: - additionalProperties: true type: object - type: 'null' title: Risk Factors policy_results: anyOf: - additionalProperties: true type: object - type: 'null' title: Policy Results required_approvals: anyOf: - items: additionalProperties: true type: object type: array - type: 'null' title: Required Approvals operations: items: $ref: '#/components/schemas/ChangeOperationCreateRequest' type: array title: Operations type: object required: - title title: ChangeRequestCreateRequest ChangeRequestApproveRequest: properties: decision: type: string pattern: ^(approved|rejected|changes_requested)$ title: Decision rationale: anyOf: - type: string maxLength: 5000 - type: 'null' title: Rationale requirement_key: anyOf: - type: string maxLength: 200 - type: 'null' title: Requirement Key type: object required: - decision title: ChangeRequestApproveRequest ChangeManagementSettingsUpdateRequest: properties: enabled: type: boolean title: Enabled default: false enforce_writes: type: boolean title: Enforce Writes default: false budget_guardrail: anyOf: - $ref: '#/components/schemas/BudgetGuardrailConfig' - type: 'null' type: object title: ChangeManagementSettingsUpdateRequest ChangeRequestExecuteRequest: properties: operation_overrides: anyOf: - items: $ref: '#/components/schemas/ChangeOperationExecuteOverride' type: array - type: 'null' title: Operation Overrides type: object title: ChangeRequestExecuteRequest ChangeApprovalResponse: properties: id: type: string title: Id approver_user_id: anyOf: - type: string - type: 'null' title: Approver User Id approver_name: anyOf: - type: string - type: 'null' title: Approver Name approver_email: anyOf: - type: string - type: 'null' title: Approver Email decision: type: string title: Decision rationale: anyOf: - type: string - type: 'null' title: Rationale requirement_key: anyOf: - type: string - type: 'null' title: Requirement Key created_at: type: string format: date-time title: Created At type: object required: - id - decision - created_at title: ChangeApprovalResponse BudgetLimitConfig: properties: amount: type: number exclusiveMinimum: 0.0 title: Amount currency: type: string maxLength: 8 minLength: 3 title: Currency type: object required: - amount - currency title: BudgetLimitConfig ApprovalGroupResponse: properties: id: type: string title: Id organization_id: type: string title: Organization Id name: type: string title: Name description: anyOf: - type: string - type: 'null' title: Description created_at: type: string format: date-time title: Created At updated_at: type: string format: date-time title: Updated At members: items: $ref: '#/components/schemas/ApprovalGroupMemberResponse' type: array title: Members type: object required: - id - organization_id - name - created_at - updated_at title: ApprovalGroupResponse BudgetGuardrailConfig: properties: enabled: type: boolean title: Enabled default: false default_limit: anyOf: - $ref: '#/components/schemas/BudgetLimitConfig' - type: 'null' brand_overrides: additionalProperties: $ref: '#/components/schemas/BudgetLimitConfig' type: object title: Brand Overrides type: object title: BudgetGuardrailConfig ChangeRequestPreviewResponse: properties: platform_type: anyOf: - type: string - type: 'null' title: Platform Type ad_id: anyOf: - type: string - type: 'null' title: Ad Id ad: anyOf: - additionalProperties: true type: object - type: 'null' title: Ad message: anyOf: - type: string - type: 'null' title: Message type: object title: ChangeRequestPreviewResponse ApprovalGroupCreateRequest: properties: name: type: string maxLength: 100 minLength: 1 title: Name description: anyOf: - type: string maxLength: 2000 - type: 'null' title: Description type: object required: - name title: ApprovalGroupCreateRequest ChangeRequestResponse: properties: id: type: string title: Id organization_id: type: string title: Organization Id company_profile_id: anyOf: - type: string - type: 'null' title: Company Profile Id created_by_user_id: anyOf: - type: string - type: 'null' title: Created By User Id source: type: string title: Source proposer_kind: type: string title: Proposer Kind default: user proposer_key: anyOf: - type: string - type: 'null' title: Proposer Key evidence_references: items: type: string type: array title: Evidence References title: type: string title: Title description: anyOf: - type: string - type: 'null' title: Description status: type: string title: Status can_approve: type: boolean title: Can Approve default: false can_execute: type: boolean title: Can Execute default: false risk_score: type: integer title: Risk Score risk_factors: anyOf: - additionalProperties: true type: object - type: 'null' title: Risk Factors policy_results: anyOf: - additionalProperties: true type: object - type: 'null' title: Policy Results required_approvals: anyOf: - items: additionalProperties: true type: object type: array - type: 'null' title: Required Approvals executed_by_user_id: anyOf: - type: string - type: 'null' title: Executed By User Id executed_at: anyOf: - type: string format: date-time - type: 'null' title: Executed At created_at: type: string format: date-time title: Created At updated_at: type: string format: date-time title: Updated At operations: items: $ref: '#/components/schemas/ChangeOperationResponse' type: array title: Operations approvals: items: $ref: '#/components/schemas/ChangeApprovalResponse' type: array title: Approvals comments: items: $ref: '#/components/schemas/ChangeRequestCommentResponse' type: array title: Comments type: object required: - id - organization_id - source - title - status - risk_score - created_at - updated_at title: ChangeRequestResponse ChangeOperationResponse: properties: id: type: string title: Id kind: type: string title: Kind operation_key: anyOf: - type: string - type: 'null' title: Operation Key title: anyOf: - type: string - type: 'null' title: Title tool_name: anyOf: - type: string - type: 'null' title: Tool Name tool_arguments: anyOf: - additionalProperties: true type: object - type: 'null' title: Tool Arguments job_type: anyOf: - type: string - type: 'null' title: Job Type job_data: anyOf: - additionalProperties: true type: object - type: 'null' title: Job Data diff: anyOf: - additionalProperties: true type: object - type: 'null' title: Diff execution_status: type: string title: Execution Status execution_result: anyOf: - additionalProperties: true type: object - type: 'null' title: Execution Result execution_error: anyOf: - type: string - type: 'null' title: Execution Error execution_started_at: anyOf: - type: string format: date-time - type: 'null' title: Execution Started At created_at: type: string format: date-time title: Created At updated_at: type: string format: date-time title: Updated At type: object required: - id - kind - execution_status - created_at - updated_at title: ChangeOperationResponse securitySchemes: HTTPBearer: type: http scheme: bearer