Ditto Apps API
The Apps API from Ditto — 6 operation(s) for apps.
The Apps API from Ditto — 6 operation(s) for apps.
openapi: 3.0.3
info:
title: Ditto HTTP RPC API Keys Apps API
version: 4.0.0
description: The Ditto HTTP RPC API provides a RESTful interface for interacting with Ditto's distributed data store. It enables you to query, insert, update and delete data across your Ditto network while maintaining strong consistency guarantees.
servers:
- url: '{base_url}/api/v4'
description: The Ditto Big Peer acts as a central synchronization point and data store in your Ditto network. It coordinates data replication between peers and provides a consistent view of your data.
variables:
base_url:
default: https://YOUR_CLOUD_URL_ENDPOINT
description: Your Cloud URL Endpoint from the Ditto Portal (Connect via HTTP), prefixed with https:// to form the base URL.
security:
- api_key_or_jwt_token: []
tags:
- name: Apps
paths:
/namespace/{namespace}/bigPeer/{big_peer_name}/app:
get:
tags:
- Apps
summary: List Apps
description: Lists all apps associated with a particular Big Peer instance.
operationId: listApps
responses:
'200':
description: list of apps associated with a big peer instance
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponse_App'
examples:
Apps:
value:
meta:
page: 1
size: 2
totalPages: 1
data:
- name: minimal
appId: ad349e91-3e4c-44bb-9278-fc5bb80239b5
- name: my-app
appId: cb692760-9786-44c3-b040-019bec5a1b77
post:
tags:
- Apps
summary: Create App
description: Creates an app associated with a particular Big Peer instance.
operationId: createApp
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/App'
required: true
responses:
'200':
description: Big Peer app successfully created.
content:
application/json:
schema:
$ref: '#/components/schemas/App'
examples:
App:
value:
name: my-app
appId: cb692760-9786-44c3-b040-019bec5a1b77
'400':
description: app id is not unique
content:
application/json:
examples:
AppIdNotUnique:
summary: there is already an app with the same id, managed by this big peer
'404':
description: Big Peer in URI params does not exist
content:
application/json:
examples:
BigPeerNotFound:
summary: big peer not found
/namespace/{namespace}/bigPeer/{big_peer_name}/app/{app_name}:
get:
tags:
- Apps
summary: Get App
description: Retrieves details for a specific Big Peer app.
operationId: getApp
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/App'
examples:
App:
value:
name: my-app
appId: cb692760-9786-44c3-b040-019bec5a1b77
'400':
description: bad request
content:
application/json:
examples:
BigPeerNameMismatch:
summary: big peer in app label doesn't match uri parameter
'404':
description: app not found
content:
application/json:
examples:
AppNotFound:
summary: big peer app not found
put:
tags:
- Apps
summary: Update App
description: Updates an existing Big Peer app's configuration.
operationId: updateApp
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAppRequest'
required: true
responses:
'200':
description: App successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/App'
'400':
description: bad request
content:
application/json:
examples:
BigPeerNameMismatch:
summary: big peer in app label doesn't match uri parameter
'404':
description: app not found
content:
application/json:
examples:
AppNotFound:
summary: big peer app not found
delete:
tags:
- Apps
summary: Delete App
description: Deletes a Big Peer app and all associated resources.
operationId: deleteApp
responses:
'200':
description: Big Peer app successfully deleted
content:
application/json:
schema:
default: null
'400':
description: bad request
content:
application/json:
examples:
BigPeerNameMismatch:
summary: big peer in app label doesn't match uri parameter
'404':
description: app not found
content:
application/json:
examples:
AppNotFound:
summary: big peer app not found
patch:
tags:
- Apps
summary: Update App
description: Updates an existing Big Peer app's configuration.
operationId: updateApp
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAppRequest'
required: true
responses:
'200':
description: App successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/App'
'400':
description: bad request
content:
application/json:
examples:
BigPeerNameMismatch:
summary: big peer in app label doesn't match uri parameter
'404':
description: app not found
content:
application/json:
examples:
AppNotFound:
summary: big peer app not found
/namespace/{namespace}/bigPeer/{big_peer_name}/app/{app_name}/bigPeerReplication:
post:
tags:
- Apps
summary: Create Replication
description: Creates a new Big Peer to Big Peer replication for an app.
operationId: createReplication
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BigPeerReplication'
required: true
responses:
'200':
description: Big Peer replication successfully created for app
content:
application/json:
schema:
$ref: '#/components/schemas/BigPeerReplication'
'404':
description: Big Peer in URI params does not exist
content:
application/json:
examples:
BigPeerNotFound:
summary: big peer not found
/namespace/{namespace}/bigPeer/{big_peer_name}/app/{app_name}/bigPeerReplication/{replication_name}:
get:
tags:
- Apps
summary: Get Replication
description: Retrieves details for a specific Big Peer replication.
operationId: getReplication
responses:
'200':
description: big peer replication successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/BigPeerReplication'
'400':
description: bad request
content:
application/json:
examples:
AppNameMismatch:
summary: app in big peer replication label doesn't match uri parameter
'404':
description: big peer replication not found
content:
application/json:
examples:
BigPeerReplicationNotFound:
summary: big peer replication not found
put:
tags:
- Apps
summary: Update Replication
description: Updates an existing Big Peer replication's configuration.
operationId: updateReplication
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateBigPeerReplicationRequest'
required: true
responses:
'200':
description: Big Peer replication successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/BigPeerReplication'
'400':
description: bad request
content:
application/json:
examples:
AppNameMismatch:
summary: app in big peer replication label doesn't match uri parameter
'404':
description: big peer replication not found
content:
application/json:
examples:
BigPeerReplicationNotFound:
summary: big peer replication not found
delete:
tags:
- Apps
summary: Delete Replication
description: Deletes a Big Peer replication.
operationId: deleteReplication
responses:
'200':
description: ''
content:
application/json:
schema:
default: null
'400':
description: bad request
content:
application/json:
examples:
AppNameMismatch:
summary: app name in big peer replication label doesn't match uri parameter
BigPeerNameMismatch:
summary: big peer in app label doesn't match uri parameter
'404':
description: big peer replication not found
content:
application/json:
examples:
BigPeerReplicationNotFound:
summary: big peer replication not found
patch:
tags:
- Apps
summary: Update Replication
description: Updates an existing Big Peer replication's configuration.
operationId: updateReplication
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateBigPeerReplicationRequest'
required: true
responses:
'200':
description: Big Peer replication successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/BigPeerReplication'
'400':
description: bad request
content:
application/json:
examples:
AppNameMismatch:
summary: app in big peer replication label doesn't match uri parameter
'404':
description: big peer replication not found
content:
application/json:
examples:
BigPeerReplicationNotFound:
summary: big peer replication not found
/namespace/{namespace}/bigPeer/{big_peer_name}/app/{app_name}/provider:
post:
tags:
- Apps
summary: Add Auth Provider
description: Adds or updates an auth provider for a Big Peer app. If a provider with the same name already exists, it will be overwritten with the new provider config.
operationId: createProvider
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddProviderRequest'
required: true
responses:
'200':
description: Auth provider successfully added or updated.
content:
application/json:
schema:
$ref: '#/components/schemas/App'
'400':
description: bad request
content:
application/json:
examples:
BigPeerNameMismatch:
summary: big peer in app label doesn't match uri parameter
'404':
description: app not found
content:
application/json:
examples:
AppNotFound:
summary: big peer app not found
/namespace/{namespace}/bigPeer/{big_peer_name}/app/{app_name}/provider/{provider_name}:
post:
tags:
- Apps
summary: Delete Auth Provider
description: Deletes an auth provider from a Big Peer app.
operationId: deleteProviderPost
responses:
'200':
description: Auth provider successfully deleted
content:
application/json:
schema:
default: null
'400':
description: bad request
content:
application/json:
examples:
BigPeerNameMismatch:
summary: big peer in app label doesn't match uri parameter
'404':
description: resource not found
content:
application/json:
examples:
AppNotFound:
summary: big peer app not found
AuthProviderNotFound:
summary: app auth provider not found
components:
schemas:
App:
type: object
required:
- name
properties:
appId:
type: string
title: AppId
format: uuid
description: UUID used to identify a BigPeerApp resource
authProviders:
type: object
title: AuthProviders
description: Auth providers associated with a BigPeer App, to be used when authenticating devices against BigPeer Subscription.
additionalProperties:
$ref: '#/components/schemas/ProviderConfig'
name:
type: string
title: Dns1123Label
description: "RFC 1123 DNS labels used for most Kubernetes resource names. Some resource types require their names to follow the DNS label standard as defined in [RFC 1123][rfc1123].\n This means the name must:\n * contain at most 63 characters * contain only lowercase alphanumeric characters or '-' * start with an alphanumeric character\n * end with an alphanumeric character\n [rfc1123]: https://tools.ietf.org/html/rfc1123"
maxLength: 63
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
BigPeerReplication:
type: object
required:
- name
properties:
connections:
type:
- array
- 'null'
items:
type: string
format: uri
description: 'A set of connection addresses of other Big Peer instances.
Each connection address should point to the Big Peer replication server dedicated to the
same app ID.
The set is allowed to be empty. In this case, it''s the remote Big Peer''s responsibility to
initiate the connection.'
example:
- big-peer-2.ditto.svc.cluster.local:4040
uniqueItems: true
name:
type: string
title: Dns1123Label
description: "RFC 1123 DNS labels used for most Kubernetes resource names. Some resource types require their names to follow the DNS label standard as defined in [RFC 1123][rfc1123].\n This means the name must:\n * contain at most 63 characters * contain only lowercase alphanumeric characters or '-' * start with an alphanumeric character\n * end with an alphanumeric character\n [rfc1123]: https://tools.ietf.org/html/rfc1123"
maxLength: 63
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
queriesByCollection:
type:
- object
- 'null'
description: 'Mapping from collection name to a list of DQL subscriptions queries.
This contains the data that the Big Peer instance will subscribe to, for the given app, in
the context of Big Peer replication.
If empty, this Big Peer instance will not subscribe to any data so no data will be
replicated to it.'
additionalProperties:
type: array
items:
type: string
propertyNames:
type: string
example:
cars:
- 'true'
UpdateAppRequest:
type: object
required:
- authProviders
properties:
authProviders:
type: object
title: AuthProviders
description: Auth providers associated with a BigPeer App, to be used when authenticating devices against BigPeer Subscription.
additionalProperties:
$ref: '#/components/schemas/ProviderConfig'
ListResponse_App:
type: object
required:
- meta
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/App'
meta:
$ref: '#/components/schemas/ListResponseMeta'
AddProviderRequest:
type: object
required:
- name
- config
properties:
config:
oneOf:
- type: object
title: TokenWebhook
description: Token webhook authentication provider. Validates device tokens by calling a user-provided webhook URL. The webhook receives the token and returns the authenticated user information and permissions.
properties:
type:
type: string
enum:
- webhookUrl
webhookUrl:
type: string
format: uri
- type: object
title: Anonymous
description: This is a configuration setting for an anonymous provider. This contains what permissions to give anonymous users, how long their sessions should last and a shared token. The purpose of the shared token is to prevent random scanners on the internet from grabbing tokens. The token isn't considered private or secure since it will be embedded in a client software.
required:
- permission
- sessionLength
- sharedToken
- type
properties:
permission:
$ref: '#/components/schemas/Permission'
sessionLength:
type: integer
format: u-int32
description: Session length in seconds. Minimum is 1 second.
minimum: 1
sharedToken:
type: string
type:
type: string
enum:
- anonymous
title: ProviderConfig
description: This describes the document stored in the __auth_config with the _id of auth_config. It describes the auth providers configured for a BigPeer App.
name:
type: string
ListResponseMeta:
type: object
required:
- page
- size
- totalPages
properties:
page:
type: integer
minimum: 0
size:
type: integer
minimum: 0
totalPages:
type: integer
minimum: 0
UpdateBigPeerReplicationRequest:
type: object
properties:
connections:
type:
- array
- 'null'
items:
type: string
format: uri
example:
- big-peer-2.ditto.svc.cluster.local:4040
uniqueItems: true
queriesByCollection:
type:
- object
- 'null'
additionalProperties:
type: array
items:
type: string
propertyNames:
type: string
example:
cars:
- 'true'
securitySchemes:
api_key_or_jwt_token:
type: http
scheme: bearer
bearerFormat: API Key or JWT
description: Authentication using either an API key or JWT token in the Authorization header
externalDocs:
url: https://docs.ditto.live/http/installation/
description: For more detailed instructions on how to use this API and the Ditto SDK, please see the documentation.