openapi: '3.0.3'
info:
title: Backbone API
version: '1.0.0'
description: |
Auto-generated by backbone-cli.
This API provides 11 standard CRUD endpoints for each model.
servers:
- url: /
description: Development server
tags:
- name: Issues
description: Issue management endpoints
- name: ServiceLevelAgreements
description: ServiceLevelAgreement management endpoints
- name: ServiceLevelPriorities
description: ServiceLevelPriority management endpoints
- name: WarrantyClaims
description: WarrantyClaim management endpoints
paths:
/api/v1/support/issues:
get:
tags:
- Issues
summary: List Issues
description: Get a paginated list of Issues with optional filtering and sorting
operationId: listIssues
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/IssueList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- Issues
summary: Create Issue
description: Create a new Issue
operationId: createIssue
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateIssueRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Issue'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/support/issues/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- Issues
summary: Get Issue by ID
operationId: getIssue
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Issue'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- Issues
summary: Update Issue (full)
operationId: updateIssue
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateIssueRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Issue'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- Issues
summary: Update Issue (partial)
operationId: patchIssue
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchIssueRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Issue'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- Issues
summary: Delete Issue (soft)
operationId: deleteIssue
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/support/issues/bulk:
post:
tags:
- Issues
summary: Bulk create Issues
operationId: bulkCreateIssues
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateIssueRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Issue'
put:
tags:
- Issues
summary: Bulk update Issues (full, atomic)
operationId: bulkUpdateIssues
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateIssueRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/IssueBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- Issues
summary: Bulk partial-update Issues (atomic)
operationId: bulkPatchIssues
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/IssueBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/issues/upsert:
post:
tags:
- Issues
summary: Upsert Issue
operationId: upsertIssue
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateIssueRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/Issue'
/api/v1/support/issues/trash:
get:
tags:
- Issues
summary: List deleted Issues
operationId: listDeletedIssues
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/IssueList'
/api/v1/support/issues/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- Issues
summary: Restore deleted Issue
operationId: restoreIssue
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/Issue'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/support/issues/empty:
delete:
tags:
- Issues
summary: Empty trash for Issues
operationId: emptyTrashIssues
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/support/issues/delete/bulk:
post:
tags:
- Issues
summary: Bulk soft-delete Issues by ids (atomic)
operationId: bulkDeleteIssues
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/issues/restore/bulk:
post:
tags:
- Issues
summary: Bulk restore Issues by ids (atomic)
operationId: bulkRestoreIssues
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/IssueBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/issues/restore/all:
post:
tags:
- Issues
summary: Restore all soft-deleted Issues
operationId: restoreAllIssues
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/support/issues/trash/bulk:
delete:
tags:
- Issues
summary: Bulk permanently-delete Issues from trash by ids (atomic)
operationId: bulkPermanentDeleteIssues
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/service_level_agreements:
get:
tags:
- ServiceLevelAgreements
summary: List ServiceLevelAgreements
description: Get a paginated list of ServiceLevelAgreements with optional filtering and sorting
operationId: listServiceLevelAgreements
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelAgreementList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- ServiceLevelAgreements
summary: Create ServiceLevelAgreement
description: Create a new ServiceLevelAgreement
operationId: createServiceLevelAgreement
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateServiceLevelAgreementRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelAgreement'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/support/service_level_agreements/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- ServiceLevelAgreements
summary: Get ServiceLevelAgreement by ID
operationId: getServiceLevelAgreement
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelAgreement'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- ServiceLevelAgreements
summary: Update ServiceLevelAgreement (full)
operationId: updateServiceLevelAgreement
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateServiceLevelAgreementRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelAgreement'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- ServiceLevelAgreements
summary: Update ServiceLevelAgreement (partial)
operationId: patchServiceLevelAgreement
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchServiceLevelAgreementRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelAgreement'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- ServiceLevelAgreements
summary: Delete ServiceLevelAgreement (soft)
operationId: deleteServiceLevelAgreement
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/support/service_level_agreements/bulk:
post:
tags:
- ServiceLevelAgreements
summary: Bulk create ServiceLevelAgreements
operationId: bulkCreateServiceLevelAgreements
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateServiceLevelAgreementRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ServiceLevelAgreement'
put:
tags:
- ServiceLevelAgreements
summary: Bulk update ServiceLevelAgreements (full, atomic)
operationId: bulkUpdateServiceLevelAgreements
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateServiceLevelAgreementRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelAgreementBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- ServiceLevelAgreements
summary: Bulk partial-update ServiceLevelAgreements (atomic)
operationId: bulkPatchServiceLevelAgreements
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelAgreementBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/service_level_agreements/upsert:
post:
tags:
- ServiceLevelAgreements
summary: Upsert ServiceLevelAgreement
operationId: upsertServiceLevelAgreement
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateServiceLevelAgreementRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelAgreement'
/api/v1/support/service_level_agreements/trash:
get:
tags:
- ServiceLevelAgreements
summary: List deleted ServiceLevelAgreements
operationId: listDeletedServiceLevelAgreements
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelAgreementList'
/api/v1/support/service_level_agreements/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- ServiceLevelAgreements
summary: Restore deleted ServiceLevelAgreement
operationId: restoreServiceLevelAgreement
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelAgreement'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/support/service_level_agreements/empty:
delete:
tags:
- ServiceLevelAgreements
summary: Empty trash for ServiceLevelAgreements
operationId: emptyTrashServiceLevelAgreements
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/support/service_level_agreements/delete/bulk:
post:
tags:
- ServiceLevelAgreements
summary: Bulk soft-delete ServiceLevelAgreements by ids (atomic)
operationId: bulkDeleteServiceLevelAgreements
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/service_level_agreements/restore/bulk:
post:
tags:
- ServiceLevelAgreements
summary: Bulk restore ServiceLevelAgreements by ids (atomic)
operationId: bulkRestoreServiceLevelAgreements
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelAgreementBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/service_level_agreements/restore/all:
post:
tags:
- ServiceLevelAgreements
summary: Restore all soft-deleted ServiceLevelAgreements
operationId: restoreAllServiceLevelAgreements
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/support/service_level_agreements/trash/bulk:
delete:
tags:
- ServiceLevelAgreements
summary: Bulk permanently-delete ServiceLevelAgreements from trash by ids (atomic)
operationId: bulkPermanentDeleteServiceLevelAgreements
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/service_level_priorities:
get:
tags:
- ServiceLevelPriorities
summary: List ServiceLevelPriorities
description: Get a paginated list of ServiceLevelPriorities with optional filtering and sorting
operationId: listServiceLevelPriorities
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelPriorityList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- ServiceLevelPriorities
summary: Create ServiceLevelPriority
description: Create a new ServiceLevelPriority
operationId: createServiceLevelPriority
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateServiceLevelPriorityRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelPriority'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/support/service_level_priorities/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- ServiceLevelPriorities
summary: Get ServiceLevelPriority by ID
operationId: getServiceLevelPriority
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelPriority'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- ServiceLevelPriorities
summary: Update ServiceLevelPriority (full)
operationId: updateServiceLevelPriority
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateServiceLevelPriorityRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelPriority'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- ServiceLevelPriorities
summary: Update ServiceLevelPriority (partial)
operationId: patchServiceLevelPriority
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchServiceLevelPriorityRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelPriority'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- ServiceLevelPriorities
summary: Delete ServiceLevelPriority (soft)
operationId: deleteServiceLevelPriority
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/support/service_level_priorities/bulk:
post:
tags:
- ServiceLevelPriorities
summary: Bulk create ServiceLevelPriorities
operationId: bulkCreateServiceLevelPriorities
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateServiceLevelPriorityRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ServiceLevelPriority'
put:
tags:
- ServiceLevelPriorities
summary: Bulk update ServiceLevelPriorities (full, atomic)
operationId: bulkUpdateServiceLevelPriorities
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateServiceLevelPriorityRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelPriorityBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- ServiceLevelPriorities
summary: Bulk partial-update ServiceLevelPriorities (atomic)
operationId: bulkPatchServiceLevelPriorities
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelPriorityBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/service_level_priorities/upsert:
post:
tags:
- ServiceLevelPriorities
summary: Upsert ServiceLevelPriority
operationId: upsertServiceLevelPriority
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateServiceLevelPriorityRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelPriority'
/api/v1/support/service_level_priorities/trash:
get:
tags:
- ServiceLevelPriorities
summary: List deleted ServiceLevelPriorities
operationId: listDeletedServiceLevelPriorities
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelPriorityList'
/api/v1/support/service_level_priorities/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- ServiceLevelPriorities
summary: Restore deleted ServiceLevelPriority
operationId: restoreServiceLevelPriority
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelPriority'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/support/service_level_priorities/empty:
delete:
tags:
- ServiceLevelPriorities
summary: Empty trash for ServiceLevelPriorities
operationId: emptyTrashServiceLevelPriorities
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/support/service_level_priorities/delete/bulk:
post:
tags:
- ServiceLevelPriorities
summary: Bulk soft-delete ServiceLevelPriorities by ids (atomic)
operationId: bulkDeleteServiceLevelPriorities
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/service_level_priorities/restore/bulk:
post:
tags:
- ServiceLevelPriorities
summary: Bulk restore ServiceLevelPriorities by ids (atomic)
operationId: bulkRestoreServiceLevelPriorities
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceLevelPriorityBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/service_level_priorities/restore/all:
post:
tags:
- ServiceLevelPriorities
summary: Restore all soft-deleted ServiceLevelPriorities
operationId: restoreAllServiceLevelPriorities
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/support/service_level_priorities/trash/bulk:
delete:
tags:
- ServiceLevelPriorities
summary: Bulk permanently-delete ServiceLevelPriorities from trash by ids (atomic)
operationId: bulkPermanentDeleteServiceLevelPriorities
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/warranty_claims:
get:
tags:
- WarrantyClaims
summary: List WarrantyClaims
description: Get a paginated list of WarrantyClaims with optional filtering and sorting
operationId: listWarrantyClaims
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/SortByParam'
- $ref: '#/components/parameters/SortOrderParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/WarrantyClaimList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- WarrantyClaims
summary: Create WarrantyClaim
description: Create a new WarrantyClaim
operationId: createWarrantyClaim
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWarrantyClaimRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/WarrantyClaim'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/support/warranty_claims/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- WarrantyClaims
summary: Get WarrantyClaim by ID
operationId: getWarrantyClaim
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/WarrantyClaim'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- WarrantyClaims
summary: Update WarrantyClaim (full)
operationId: updateWarrantyClaim
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWarrantyClaimRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/WarrantyClaim'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- WarrantyClaims
summary: Update WarrantyClaim (partial)
operationId: patchWarrantyClaim
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchWarrantyClaimRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/WarrantyClaim'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- WarrantyClaims
summary: Delete WarrantyClaim (soft)
operationId: deleteWarrantyClaim
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/support/warranty_claims/bulk:
post:
tags:
- WarrantyClaims
summary: Bulk create WarrantyClaims
operationId: bulkCreateWarrantyClaims
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateWarrantyClaimRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/WarrantyClaim'
put:
tags:
- WarrantyClaims
summary: Bulk update WarrantyClaims (full, atomic)
operationId: bulkUpdateWarrantyClaims
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateWarrantyClaimRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/WarrantyClaimBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- WarrantyClaims
summary: Bulk partial-update WarrantyClaims (atomic)
operationId: bulkPatchWarrantyClaims
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
required: [ids, patch]
properties:
ids:
type: array
items: { type: string }
patch:
type: object
additionalProperties: true
- type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [id, patch]
properties:
id: { type: string }
patch: { type: object, additionalProperties: true }
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/WarrantyClaimBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/warranty_claims/upsert:
post:
tags:
- WarrantyClaims
summary: Upsert WarrantyClaim
operationId: upsertWarrantyClaim
parameters:
- name: key_field
in: query
schema:
type: string
- name: key_value
in: query
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWarrantyClaimRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/WarrantyClaim'
/api/v1/support/warranty_claims/trash:
get:
tags:
- WarrantyClaims
summary: List deleted WarrantyClaims
operationId: listDeletedWarrantyClaims
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/WarrantyClaimList'
/api/v1/support/warranty_claims/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- WarrantyClaims
summary: Restore deleted WarrantyClaim
operationId: restoreWarrantyClaim
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/WarrantyClaim'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/support/warranty_claims/empty:
delete:
tags:
- WarrantyClaims
summary: Empty trash for WarrantyClaims
operationId: emptyTrashWarrantyClaims
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/support/warranty_claims/delete/bulk:
post:
tags:
- WarrantyClaims
summary: Bulk soft-delete WarrantyClaims by ids (atomic)
operationId: bulkDeleteWarrantyClaims
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Soft-deleted
content:
application/json:
schema:
type: object
properties:
soft_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/warranty_claims/restore/bulk:
post:
tags:
- WarrantyClaims
summary: Bulk restore WarrantyClaims by ids (atomic)
operationId: bulkRestoreWarrantyClaims
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/WarrantyClaimBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/support/warranty_claims/restore/all:
post:
tags:
- WarrantyClaims
summary: Restore all soft-deleted WarrantyClaims
operationId: restoreAllWarrantyClaims
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/support/warranty_claims/trash/bulk:
delete:
tags:
- WarrantyClaims
summary: Bulk permanently-delete WarrantyClaims from trash by ids (atomic)
operationId: bulkPermanentDeleteWarrantyClaims
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Permanently deleted
content:
application/json:
schema:
type: object
properties:
permanently_deleted: { type: integer }
'400':
$ref: '#/components/responses/BadRequest'
components:
schemas:
Issue:
type: object
required:
- id
- subject
- priority
- status
- agreement_status
- opened_at
- response_breached
- total_paused_mins
- metadata
properties:
id:
type: string
format: uuid
customer_id:
nullable: true
type: string
format: uuid
subject:
type: string
maxLength: 200
description:
nullable: true
type: string
maxLength: 4000
priority:
type: string
sla_id:
nullable: true
type: string
format: uuid
status:
type: string
agreement_status:
type: string
opened_at:
type: string
format: date-time
response_by:
nullable: true
type: string
format: date-time
resolution_by:
nullable: true
type: string
format: date-time
first_responded_at:
nullable: true
type: string
format: date-time
response_breached:
type: boolean
resolved_at:
nullable: true
type: string
format: date-time
paused_at:
nullable: true
type: string
format: date-time
total_paused_mins:
type: integer
format: int32
escalated_project_id:
nullable: true
type: string
format: uuid
metadata:
type: object
IssueBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Issue'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateIssueRequest:
type: object
required:
- subject
- priority
- status
- agreement_status
- opened_at
- response_breached
- total_paused_mins
- metadata
properties:
customer_id:
nullable: true
type: string
format: uuid
subject:
type: string
maxLength: 200
description:
nullable: true
type: string
maxLength: 4000
priority:
type: string
sla_id:
nullable: true
type: string
format: uuid
status:
type: string
agreement_status:
type: string
opened_at:
type: string
format: date-time
response_by:
nullable: true
type: string
format: date-time
resolution_by:
nullable: true
type: string
format: date-time
first_responded_at:
nullable: true
type: string
format: date-time
response_breached:
type: boolean
resolved_at:
nullable: true
type: string
format: date-time
paused_at:
nullable: true
type: string
format: date-time
total_paused_mins:
type: integer
format: int32
escalated_project_id:
nullable: true
type: string
format: uuid
metadata:
type: object
UpdateIssueRequest:
type: object
required:
- subject
- priority
- status
- agreement_status
- opened_at
- response_breached
- total_paused_mins
- metadata
properties:
customer_id:
nullable: true
type: string
format: uuid
subject:
type: string
maxLength: 200
description:
nullable: true
type: string
maxLength: 4000
priority:
type: string
sla_id:
nullable: true
type: string
format: uuid
status:
type: string
agreement_status:
type: string
opened_at:
type: string
format: date-time
response_by:
nullable: true
type: string
format: date-time
resolution_by:
nullable: true
type: string
format: date-time
first_responded_at:
nullable: true
type: string
format: date-time
response_breached:
type: boolean
resolved_at:
nullable: true
type: string
format: date-time
paused_at:
nullable: true
type: string
format: date-time
total_paused_mins:
type: integer
format: int32
escalated_project_id:
nullable: true
type: string
format: uuid
metadata:
type: object
PatchIssueRequest:
type: object
properties:
customer_id:
nullable: true
type: string
format: uuid
subject:
type: string
maxLength: 200
description:
nullable: true
type: string
maxLength: 4000
priority:
type: string
sla_id:
nullable: true
type: string
format: uuid
status:
type: string
agreement_status:
type: string
opened_at:
type: string
format: date-time
response_by:
nullable: true
type: string
format: date-time
resolution_by:
nullable: true
type: string
format: date-time
first_responded_at:
nullable: true
type: string
format: date-time
response_breached:
type: boolean
resolved_at:
nullable: true
type: string
format: date-time
paused_at:
nullable: true
type: string
format: date-time
total_paused_mins:
type: integer
format: int32
escalated_project_id:
nullable: true
type: string
format: uuid
metadata:
type: object
IssueList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Issue'
meta:
$ref: '#/components/schemas/PaginationMeta'
ServiceLevelAgreement:
type: object
required:
- id
- name
- is_default
- status
- metadata
properties:
id:
type: string
format: uuid
name:
type: string
maxLength: 140
is_default:
type: boolean
status:
type: string
metadata:
type: object
ServiceLevelAgreementBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/ServiceLevelAgreement'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateServiceLevelAgreementRequest:
type: object
required:
- name
- is_default
- status
- metadata
properties:
name:
type: string
maxLength: 140
is_default:
type: boolean
status:
type: string
metadata:
type: object
UpdateServiceLevelAgreementRequest:
type: object
required:
- name
- is_default
- status
- metadata
properties:
name:
type: string
maxLength: 140
is_default:
type: boolean
status:
type: string
metadata:
type: object
PatchServiceLevelAgreementRequest:
type: object
properties:
name:
type: string
maxLength: 140
is_default:
type: boolean
status:
type: string
metadata:
type: object
ServiceLevelAgreementList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/ServiceLevelAgreement'
meta:
$ref: '#/components/schemas/PaginationMeta'
ServiceLevelPriority:
type: object
required:
- id
- sla_id
- priority
- response_time_mins
- resolution_time_mins
- metadata
properties:
id:
type: string
format: uuid
sla_id:
type: string
format: uuid
priority:
type: string
response_time_mins:
type: integer
format: int32
resolution_time_mins:
type: integer
format: int32
metadata:
type: object
ServiceLevelPriorityBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/ServiceLevelPriority'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateServiceLevelPriorityRequest:
type: object
required:
- sla_id
- priority
- response_time_mins
- resolution_time_mins
- metadata
properties:
sla_id:
type: string
format: uuid
priority:
type: string
response_time_mins:
type: integer
format: int32
resolution_time_mins:
type: integer
format: int32
metadata:
type: object
UpdateServiceLevelPriorityRequest:
type: object
required:
- sla_id
- priority
- response_time_mins
- resolution_time_mins
- metadata
properties:
sla_id:
type: string
format: uuid
priority:
type: string
response_time_mins:
type: integer
format: int32
resolution_time_mins:
type: integer
format: int32
metadata:
type: object
PatchServiceLevelPriorityRequest:
type: object
properties:
sla_id:
type: string
format: uuid
priority:
type: string
response_time_mins:
type: integer
format: int32
resolution_time_mins:
type: integer
format: int32
metadata:
type: object
ServiceLevelPriorityList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/ServiceLevelPriority'
meta:
$ref: '#/components/schemas/PaginationMeta'
WarrantyClaim:
type: object
required:
- id
- item_id
- claim_date
- is_under_warranty
- status
- metadata
properties:
id:
type: string
format: uuid
customer_id:
nullable: true
type: string
format: uuid
item_id:
type: string
format: uuid
serial_no:
nullable: true
type: string
maxLength: 140
claim_date:
type: string
format: date-time
warranty_expiry:
nullable: true
type: string
format: date-time
is_under_warranty:
type: boolean
status:
type: string
issue_id:
nullable: true
type: string
format: uuid
description:
nullable: true
type: string
maxLength: 2000
resolution:
nullable: true
type: string
maxLength: 2000
metadata:
type: object
WarrantyClaimBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/WarrantyClaim'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateWarrantyClaimRequest:
type: object
required:
- item_id
- claim_date
- is_under_warranty
- status
- metadata
properties:
customer_id:
nullable: true
type: string
format: uuid
item_id:
type: string
format: uuid
serial_no:
nullable: true
type: string
maxLength: 140
claim_date:
type: string
format: date-time
warranty_expiry:
nullable: true
type: string
format: date-time
is_under_warranty:
type: boolean
status:
type: string
issue_id:
nullable: true
type: string
format: uuid
description:
nullable: true
type: string
maxLength: 2000
resolution:
nullable: true
type: string
maxLength: 2000
metadata:
type: object
UpdateWarrantyClaimRequest:
type: object
required:
- item_id
- claim_date
- is_under_warranty
- status
- metadata
properties:
customer_id:
nullable: true
type: string
format: uuid
item_id:
type: string
format: uuid
serial_no:
nullable: true
type: string
maxLength: 140
claim_date:
type: string
format: date-time
warranty_expiry:
nullable: true
type: string
format: date-time
is_under_warranty:
type: boolean
status:
type: string
issue_id:
nullable: true
type: string
format: uuid
description:
nullable: true
type: string
maxLength: 2000
resolution:
nullable: true
type: string
maxLength: 2000
metadata:
type: object
PatchWarrantyClaimRequest:
type: object
properties:
customer_id:
nullable: true
type: string
format: uuid
item_id:
type: string
format: uuid
serial_no:
nullable: true
type: string
maxLength: 140
claim_date:
type: string
format: date-time
warranty_expiry:
nullable: true
type: string
format: date-time
is_under_warranty:
type: boolean
status:
type: string
issue_id:
nullable: true
type: string
format: uuid
description:
nullable: true
type: string
maxLength: 2000
resolution:
nullable: true
type: string
maxLength: 2000
metadata:
type: object
WarrantyClaimList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/WarrantyClaim'
meta:
$ref: '#/components/schemas/PaginationMeta'
PaginationMeta:
type: object
properties:
total:
type: integer
example: 100
page:
type: integer
example: 1
per_page:
type: integer
example: 20
total_pages:
type: integer
example: 5
Error:
type: object
required:
- code
- message
properties:
code:
type: string
example: VALIDATION_ERROR
message:
type: string
example: Invalid input data
details:
type: object
additionalProperties: true
parameters:
IdParam:
name: id
in: path
required: true
schema:
type: string
format: uuid
PageParam:
name: page
in: query
schema:
type: integer
minimum: 1
default: 1
PerPageParam:
name: per_page
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 20
SortByParam:
name: sort_by
in: query
schema:
type: string
SortOrderParam:
name: sort_order
in: query
schema:
type: string
enum: [asc, desc]
default: asc
responses:
BadRequest:
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
requestBodies:
BatchIds:
required: true
content:
application/json:
schema:
type: object
required: [ids]
properties:
ids:
type: array
items: { type: string }
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
security:
- bearerAuth: []