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: DigestDigests
description: DigestDigest management endpoints
- name: DigestSubscriptions
description: DigestSubscription management endpoints
- name: DigestDigestKpis
description: DigestDigestKpi management endpoints
- name: DigestTips
description: DigestTip management endpoints
- name: DigestTipUsers
description: DigestTipUser management endpoints
paths:
/api/v1/digest/digest_digests:
get:
tags:
- DigestDigests
summary: List DigestDigests
description: Get a paginated list of DigestDigests with optional filtering and sorting
operationId: listDigestDigests
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/DigestDigestList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- DigestDigests
summary: Create DigestDigest
description: Create a new DigestDigest
operationId: createDigestDigest
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDigestDigestRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigest'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/digest/digest_digests/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- DigestDigests
summary: Get DigestDigest by ID
operationId: getDigestDigest
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigest'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- DigestDigests
summary: Update DigestDigest (full)
operationId: updateDigestDigest
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDigestDigestRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigest'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- DigestDigests
summary: Update DigestDigest (partial)
operationId: patchDigestDigest
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchDigestDigestRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigest'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- DigestDigests
summary: Delete DigestDigest (soft)
operationId: deleteDigestDigest
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/digest/digest_digests/bulk:
post:
tags:
- DigestDigests
summary: Bulk create DigestDigests
operationId: bulkCreateDigestDigests
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateDigestDigestRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DigestDigest'
put:
tags:
- DigestDigests
summary: Bulk update DigestDigests (full, atomic)
operationId: bulkUpdateDigestDigests
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateDigestDigestRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- DigestDigests
summary: Bulk partial-update DigestDigests (atomic)
operationId: bulkPatchDigestDigests
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/DigestDigestBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/digest/digest_digests/upsert:
post:
tags:
- DigestDigests
summary: Upsert DigestDigest
operationId: upsertDigestDigest
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/UpdateDigestDigestRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigest'
/api/v1/digest/digest_digests/trash:
get:
tags:
- DigestDigests
summary: List deleted DigestDigests
operationId: listDeletedDigestDigests
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestList'
/api/v1/digest/digest_digests/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- DigestDigests
summary: Restore deleted DigestDigest
operationId: restoreDigestDigest
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigest'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/digest/digest_digests/empty:
delete:
tags:
- DigestDigests
summary: Empty trash for DigestDigests
operationId: emptyTrashDigestDigests
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/digest/digest_digests/delete/bulk:
post:
tags:
- DigestDigests
summary: Bulk soft-delete DigestDigests by ids (atomic)
operationId: bulkDeleteDigestDigests
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/digest/digest_digests/restore/bulk:
post:
tags:
- DigestDigests
summary: Bulk restore DigestDigests by ids (atomic)
operationId: bulkRestoreDigestDigests
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/digest/digest_digests/restore/all:
post:
tags:
- DigestDigests
summary: Restore all soft-deleted DigestDigests
operationId: restoreAllDigestDigests
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/digest/digest_digests/trash/bulk:
delete:
tags:
- DigestDigests
summary: Bulk permanently-delete DigestDigests from trash by ids (atomic)
operationId: bulkPermanentDeleteDigestDigests
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/digest/digest_subscriptions:
get:
tags:
- DigestSubscriptions
summary: List DigestSubscriptions
description: Get a paginated list of DigestSubscriptions with optional filtering and sorting
operationId: listDigestSubscriptions
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/DigestSubscriptionList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- DigestSubscriptions
summary: Create DigestSubscription
description: Create a new DigestSubscription
operationId: createDigestSubscription
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDigestSubscriptionRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/DigestSubscription'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/digest/digest_subscriptions/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- DigestSubscriptions
summary: Get DigestSubscription by ID
operationId: getDigestSubscription
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/DigestSubscription'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- DigestSubscriptions
summary: Update DigestSubscription (full)
operationId: updateDigestSubscription
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDigestSubscriptionRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestSubscription'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- DigestSubscriptions
summary: Update DigestSubscription (partial)
operationId: patchDigestSubscription
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchDigestSubscriptionRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestSubscription'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- DigestSubscriptions
summary: Delete DigestSubscription (soft)
operationId: deleteDigestSubscription
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/digest/digest_subscriptions/bulk:
post:
tags:
- DigestSubscriptions
summary: Bulk create DigestSubscriptions
operationId: bulkCreateDigestSubscriptions
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateDigestSubscriptionRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DigestSubscription'
put:
tags:
- DigestSubscriptions
summary: Bulk update DigestSubscriptions (full, atomic)
operationId: bulkUpdateDigestSubscriptions
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateDigestSubscriptionRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestSubscriptionBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- DigestSubscriptions
summary: Bulk partial-update DigestSubscriptions (atomic)
operationId: bulkPatchDigestSubscriptions
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/DigestSubscriptionBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/digest/digest_subscriptions/upsert:
post:
tags:
- DigestSubscriptions
summary: Upsert DigestSubscription
operationId: upsertDigestSubscription
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/UpdateDigestSubscriptionRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/DigestSubscription'
/api/v1/digest/digest_subscriptions/trash:
get:
tags:
- DigestSubscriptions
summary: List deleted DigestSubscriptions
operationId: listDeletedDigestSubscriptions
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/DigestSubscriptionList'
/api/v1/digest/digest_subscriptions/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- DigestSubscriptions
summary: Restore deleted DigestSubscription
operationId: restoreDigestSubscription
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/DigestSubscription'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/digest/digest_subscriptions/empty:
delete:
tags:
- DigestSubscriptions
summary: Empty trash for DigestSubscriptions
operationId: emptyTrashDigestSubscriptions
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/digest/digest_subscriptions/delete/bulk:
post:
tags:
- DigestSubscriptions
summary: Bulk soft-delete DigestSubscriptions by ids (atomic)
operationId: bulkDeleteDigestSubscriptions
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/digest/digest_subscriptions/restore/bulk:
post:
tags:
- DigestSubscriptions
summary: Bulk restore DigestSubscriptions by ids (atomic)
operationId: bulkRestoreDigestSubscriptions
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/DigestSubscriptionBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/digest/digest_subscriptions/restore/all:
post:
tags:
- DigestSubscriptions
summary: Restore all soft-deleted DigestSubscriptions
operationId: restoreAllDigestSubscriptions
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/digest/digest_subscriptions/trash/bulk:
delete:
tags:
- DigestSubscriptions
summary: Bulk permanently-delete DigestSubscriptions from trash by ids (atomic)
operationId: bulkPermanentDeleteDigestSubscriptions
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/digest/digest_digest_kpis:
get:
tags:
- DigestDigestKpis
summary: List DigestDigestKpis
description: Get a paginated list of DigestDigestKpis with optional filtering and sorting
operationId: listDigestDigestKpis
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/DigestDigestKpiList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- DigestDigestKpis
summary: Create DigestDigestKpi
description: Create a new DigestDigestKpi
operationId: createDigestDigestKpi
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDigestDigestKpiRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestKpi'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/digest/digest_digest_kpis/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- DigestDigestKpis
summary: Get DigestDigestKpi by ID
operationId: getDigestDigestKpi
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestKpi'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- DigestDigestKpis
summary: Update DigestDigestKpi (full)
operationId: updateDigestDigestKpi
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDigestDigestKpiRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestKpi'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- DigestDigestKpis
summary: Update DigestDigestKpi (partial)
operationId: patchDigestDigestKpi
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchDigestDigestKpiRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestKpi'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- DigestDigestKpis
summary: Delete DigestDigestKpi (soft)
operationId: deleteDigestDigestKpi
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/digest/digest_digest_kpis/bulk:
post:
tags:
- DigestDigestKpis
summary: Bulk create DigestDigestKpis
operationId: bulkCreateDigestDigestKpis
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateDigestDigestKpiRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DigestDigestKpi'
put:
tags:
- DigestDigestKpis
summary: Bulk update DigestDigestKpis (full, atomic)
operationId: bulkUpdateDigestDigestKpis
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateDigestDigestKpiRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestKpiBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- DigestDigestKpis
summary: Bulk partial-update DigestDigestKpis (atomic)
operationId: bulkPatchDigestDigestKpis
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/DigestDigestKpiBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/digest/digest_digest_kpis/upsert:
post:
tags:
- DigestDigestKpis
summary: Upsert DigestDigestKpi
operationId: upsertDigestDigestKpi
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/UpdateDigestDigestKpiRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestKpi'
/api/v1/digest/digest_digest_kpis/trash:
get:
tags:
- DigestDigestKpis
summary: List deleted DigestDigestKpis
operationId: listDeletedDigestDigestKpis
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestKpiList'
/api/v1/digest/digest_digest_kpis/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- DigestDigestKpis
summary: Restore deleted DigestDigestKpi
operationId: restoreDigestDigestKpi
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestKpi'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/digest/digest_digest_kpis/empty:
delete:
tags:
- DigestDigestKpis
summary: Empty trash for DigestDigestKpis
operationId: emptyTrashDigestDigestKpis
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/digest/digest_digest_kpis/delete/bulk:
post:
tags:
- DigestDigestKpis
summary: Bulk soft-delete DigestDigestKpis by ids (atomic)
operationId: bulkDeleteDigestDigestKpis
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/digest/digest_digest_kpis/restore/bulk:
post:
tags:
- DigestDigestKpis
summary: Bulk restore DigestDigestKpis by ids (atomic)
operationId: bulkRestoreDigestDigestKpis
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/DigestDigestKpiBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/digest/digest_digest_kpis/restore/all:
post:
tags:
- DigestDigestKpis
summary: Restore all soft-deleted DigestDigestKpis
operationId: restoreAllDigestDigestKpis
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/digest/digest_digest_kpis/trash/bulk:
delete:
tags:
- DigestDigestKpis
summary: Bulk permanently-delete DigestDigestKpis from trash by ids (atomic)
operationId: bulkPermanentDeleteDigestDigestKpis
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/digest/digest_tips:
get:
tags:
- DigestTips
summary: List DigestTips
description: Get a paginated list of DigestTips with optional filtering and sorting
operationId: listDigestTips
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/DigestTipList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- DigestTips
summary: Create DigestTip
description: Create a new DigestTip
operationId: createDigestTip
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDigestTipRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTip'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/digest/digest_tips/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- DigestTips
summary: Get DigestTip by ID
operationId: getDigestTip
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTip'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- DigestTips
summary: Update DigestTip (full)
operationId: updateDigestTip
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDigestTipRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTip'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- DigestTips
summary: Update DigestTip (partial)
operationId: patchDigestTip
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchDigestTipRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTip'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- DigestTips
summary: Delete DigestTip (soft)
operationId: deleteDigestTip
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/digest/digest_tips/bulk:
post:
tags:
- DigestTips
summary: Bulk create DigestTips
operationId: bulkCreateDigestTips
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateDigestTipRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DigestTip'
put:
tags:
- DigestTips
summary: Bulk update DigestTips (full, atomic)
operationId: bulkUpdateDigestTips
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateDigestTipRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- DigestTips
summary: Bulk partial-update DigestTips (atomic)
operationId: bulkPatchDigestTips
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/DigestTipBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/digest/digest_tips/upsert:
post:
tags:
- DigestTips
summary: Upsert DigestTip
operationId: upsertDigestTip
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/UpdateDigestTipRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTip'
/api/v1/digest/digest_tips/trash:
get:
tags:
- DigestTips
summary: List deleted DigestTips
operationId: listDeletedDigestTips
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipList'
/api/v1/digest/digest_tips/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- DigestTips
summary: Restore deleted DigestTip
operationId: restoreDigestTip
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTip'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/digest/digest_tips/empty:
delete:
tags:
- DigestTips
summary: Empty trash for DigestTips
operationId: emptyTrashDigestTips
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/digest/digest_tips/delete/bulk:
post:
tags:
- DigestTips
summary: Bulk soft-delete DigestTips by ids (atomic)
operationId: bulkDeleteDigestTips
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/digest/digest_tips/restore/bulk:
post:
tags:
- DigestTips
summary: Bulk restore DigestTips by ids (atomic)
operationId: bulkRestoreDigestTips
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/digest/digest_tips/restore/all:
post:
tags:
- DigestTips
summary: Restore all soft-deleted DigestTips
operationId: restoreAllDigestTips
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/digest/digest_tips/trash/bulk:
delete:
tags:
- DigestTips
summary: Bulk permanently-delete DigestTips from trash by ids (atomic)
operationId: bulkPermanentDeleteDigestTips
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/digest/digest_tip_users:
get:
tags:
- DigestTipUsers
summary: List DigestTipUsers
description: Get a paginated list of DigestTipUsers with optional filtering and sorting
operationId: listDigestTipUsers
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/DigestTipUserList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- DigestTipUsers
summary: Create DigestTipUser
description: Create a new DigestTipUser
operationId: createDigestTipUser
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDigestTipUserRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipUser'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/digest/digest_tip_users/{id}:
parameters:
- $ref: '#/components/parameters/IdParam'
get:
tags:
- DigestTipUsers
summary: Get DigestTipUser by ID
operationId: getDigestTipUser
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipUser'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- DigestTipUsers
summary: Update DigestTipUser (full)
operationId: updateDigestTipUser
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDigestTipUserRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipUser'
'404':
$ref: '#/components/responses/NotFound'
patch:
tags:
- DigestTipUsers
summary: Update DigestTipUser (partial)
operationId: patchDigestTipUser
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchDigestTipUserRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipUser'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- DigestTipUsers
summary: Delete DigestTipUser (soft)
operationId: deleteDigestTipUser
responses:
'204':
description: Deleted
'404':
$ref: '#/components/responses/NotFound'
/api/v1/digest/digest_tip_users/bulk:
post:
tags:
- DigestTipUsers
summary: Bulk create DigestTipUsers
operationId: bulkCreateDigestTipUsers
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateDigestTipUserRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DigestTipUser'
put:
tags:
- DigestTipUsers
summary: Bulk update DigestTipUsers (full, atomic)
operationId: bulkUpdateDigestTipUsers
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
required: [id]
properties:
id:
type: string
- $ref: '#/components/schemas/UpdateDigestTipUserRequest'
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipUserBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
patch:
tags:
- DigestTipUsers
summary: Bulk partial-update DigestTipUsers (atomic)
operationId: bulkPatchDigestTipUsers
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/DigestTipUserBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/digest/digest_tip_users/upsert:
post:
tags:
- DigestTipUsers
summary: Upsert DigestTipUser
operationId: upsertDigestTipUser
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/UpdateDigestTipUserRequest'
responses:
'200':
description: Upserted
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipUser'
/api/v1/digest/digest_tip_users/trash:
get:
tags:
- DigestTipUsers
summary: List deleted DigestTipUsers
operationId: listDeletedDigestTipUsers
parameters:
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PerPageParam'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipUserList'
/api/v1/digest/digest_tip_users/{id}/restore:
parameters:
- $ref: '#/components/parameters/IdParam'
post:
tags:
- DigestTipUsers
summary: Restore deleted DigestTipUser
operationId: restoreDigestTipUser
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipUser'
'404':
$ref: '#/components/responses/NotFound'
/api/v1/digest/digest_tip_users/empty:
delete:
tags:
- DigestTipUsers
summary: Empty trash for DigestTipUsers
operationId: emptyTrashDigestTipUsers
responses:
'200':
description: Trash emptied
content:
application/json:
schema:
type: object
properties:
deleted_count:
type: integer
/api/v1/digest/digest_tip_users/delete/bulk:
post:
tags:
- DigestTipUsers
summary: Bulk soft-delete DigestTipUsers by ids (atomic)
operationId: bulkDeleteDigestTipUsers
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/digest/digest_tip_users/restore/bulk:
post:
tags:
- DigestTipUsers
summary: Bulk restore DigestTipUsers by ids (atomic)
operationId: bulkRestoreDigestTipUsers
requestBody:
$ref: '#/components/requestBodies/BatchIds'
responses:
'200':
description: Restored
content:
application/json:
schema:
$ref: '#/components/schemas/DigestTipUserBulkResult'
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/digest/digest_tip_users/restore/all:
post:
tags:
- DigestTipUsers
summary: Restore all soft-deleted DigestTipUsers
operationId: restoreAllDigestTipUsers
responses:
'200':
description: Restored
content:
application/json:
schema:
type: object
properties:
restored: { type: integer }
/api/v1/digest/digest_tip_users/trash/bulk:
delete:
tags:
- DigestTipUsers
summary: Bulk permanently-delete DigestTipUsers from trash by ids (atomic)
operationId: bulkPermanentDeleteDigestTipUsers
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:
DigestDigest:
type: object
required:
- id
- name
- periodicity
- state
- metadata
properties:
id:
type: string
format: uuid
name:
type: string
maxLength: 255
periodicity:
type: string
next_run_date:
nullable: true
type: string
format: date
state:
type: string
metadata:
type: object
DigestDigestBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/DigestDigest'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateDigestDigestRequest:
type: object
required:
- name
- periodicity
- state
- metadata
properties:
name:
type: string
maxLength: 255
periodicity:
type: string
next_run_date:
nullable: true
type: string
format: date
state:
type: string
metadata:
type: object
UpdateDigestDigestRequest:
type: object
required:
- name
- periodicity
- state
- metadata
properties:
name:
type: string
maxLength: 255
periodicity:
type: string
next_run_date:
nullable: true
type: string
format: date
state:
type: string
metadata:
type: object
PatchDigestDigestRequest:
type: object
properties:
name:
type: string
maxLength: 255
periodicity:
type: string
next_run_date:
nullable: true
type: string
format: date
state:
type: string
metadata:
type: object
DigestDigestList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/DigestDigest'
meta:
$ref: '#/components/schemas/PaginationMeta'
DigestSubscription:
type: object
required:
- id
- digest_id
- user_id
- state
- metadata
properties:
id:
type: string
format: uuid
digest_id:
type: string
format: uuid
user_id:
type: string
format: uuid
state:
type: string
unsubscribed_at:
nullable: true
type: string
format: date-time
metadata:
type: object
DigestSubscriptionBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/DigestSubscription'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateDigestSubscriptionRequest:
type: object
required:
- digest_id
- user_id
- state
- metadata
properties:
digest_id:
type: string
format: uuid
user_id:
type: string
format: uuid
state:
type: string
unsubscribed_at:
nullable: true
type: string
format: date-time
metadata:
type: object
UpdateDigestSubscriptionRequest:
type: object
required:
- digest_id
- user_id
- state
- metadata
properties:
digest_id:
type: string
format: uuid
user_id:
type: string
format: uuid
state:
type: string
unsubscribed_at:
nullable: true
type: string
format: date-time
metadata:
type: object
PatchDigestSubscriptionRequest:
type: object
properties:
digest_id:
type: string
format: uuid
user_id:
type: string
format: uuid
state:
type: string
unsubscribed_at:
nullable: true
type: string
format: date-time
metadata:
type: object
DigestSubscriptionList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/DigestSubscription'
meta:
$ref: '#/components/schemas/PaginationMeta'
DigestDigestKpi:
type: object
required:
- id
- digest_id
- kpi_key
- metadata
properties:
id:
type: string
format: uuid
digest_id:
type: string
format: uuid
kpi_key:
type: string
maxLength: 120
metadata:
type: object
DigestDigestKpiBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/DigestDigestKpi'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateDigestDigestKpiRequest:
type: object
required:
- digest_id
- kpi_key
- metadata
properties:
digest_id:
type: string
format: uuid
kpi_key:
type: string
maxLength: 120
metadata:
type: object
UpdateDigestDigestKpiRequest:
type: object
required:
- digest_id
- kpi_key
- metadata
properties:
digest_id:
type: string
format: uuid
kpi_key:
type: string
maxLength: 120
metadata:
type: object
PatchDigestDigestKpiRequest:
type: object
properties:
digest_id:
type: string
format: uuid
kpi_key:
type: string
maxLength: 120
metadata:
type: object
DigestDigestKpiList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/DigestDigestKpi'
meta:
$ref: '#/components/schemas/PaginationMeta'
DigestTip:
type: object
required:
- id
- sequence
- name
- tip_description
- metadata
properties:
id:
type: string
format: uuid
sequence:
type: integer
format: int32
name:
type: string
maxLength: 255
tip_description:
type: string
group_key:
nullable: true
type: string
maxLength: 120
metadata:
type: object
DigestTipBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/DigestTip'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateDigestTipRequest:
type: object
required:
- sequence
- name
- tip_description
- metadata
properties:
sequence:
type: integer
format: int32
name:
type: string
maxLength: 255
tip_description:
type: string
group_key:
nullable: true
type: string
maxLength: 120
metadata:
type: object
UpdateDigestTipRequest:
type: object
required:
- sequence
- name
- tip_description
- metadata
properties:
sequence:
type: integer
format: int32
name:
type: string
maxLength: 255
tip_description:
type: string
group_key:
nullable: true
type: string
maxLength: 120
metadata:
type: object
PatchDigestTipRequest:
type: object
properties:
sequence:
type: integer
format: int32
name:
type: string
maxLength: 255
tip_description:
type: string
group_key:
nullable: true
type: string
maxLength: 120
metadata:
type: object
DigestTipList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/DigestTip'
meta:
$ref: '#/components/schemas/PaginationMeta'
DigestTipUser:
type: object
required:
- id
- tip_id
- user_id
- metadata
properties:
id:
type: string
format: uuid
tip_id:
type: string
format: uuid
user_id:
type: string
format: uuid
metadata:
type: object
DigestTipUserBulkResult:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/DigestTipUser'
total: { type: integer }
failed: { type: integer }
errors:
type: array
items: { type: string }
CreateDigestTipUserRequest:
type: object
required:
- tip_id
- user_id
- metadata
properties:
tip_id:
type: string
format: uuid
user_id:
type: string
format: uuid
metadata:
type: object
UpdateDigestTipUserRequest:
type: object
required:
- tip_id
- user_id
- metadata
properties:
tip_id:
type: string
format: uuid
user_id:
type: string
format: uuid
metadata:
type: object
PatchDigestTipUserRequest:
type: object
properties:
tip_id:
type: string
format: uuid
user_id:
type: string
format: uuid
metadata:
type: object
DigestTipUserList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/DigestTipUser'
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: []