359 lines
10 KiB
YAML
359 lines
10 KiB
YAML
openapi: 3.0.0
|
|
info:
|
|
title: GroundControl push server API
|
|
description: Push notifications server for BlueWallet
|
|
version: 0.0.13
|
|
servers:
|
|
- url: http://localhost:3001
|
|
- url: https://groundcontrol-bluewallet-stg.herokuapp.com
|
|
- url: https://groundcontrol-bluewallet.herokuapp.com
|
|
paths:
|
|
/lightningInvoiceGotSettled:
|
|
post:
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/LightningInvoiceSettledNotification"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
|
|
/majorTomToGroundControl:
|
|
post:
|
|
summary: "Associate bitcoin addressess / ln preimage hashes / txids that you wish to be notified about to specific push token. Token serves as unique identifier of a device/user. Also, OS of the token"
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
addresses:
|
|
type: array
|
|
items:
|
|
type: string
|
|
hashes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
txids:
|
|
type: array
|
|
items:
|
|
type: string
|
|
token:
|
|
type: string
|
|
os:
|
|
type: string
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
|
|
/unsubscribe:
|
|
post:
|
|
summary: "This call is a reverse call for /majorTomToGroundControl. In case user doesnt want to track addresses/txids/ln invoice hashes, he makes this call along with his token/os so GroundControl can remove them from the database"
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
addresses:
|
|
type: array
|
|
items:
|
|
type: string
|
|
hashes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
txids:
|
|
type: array
|
|
items:
|
|
type: string
|
|
token:
|
|
type: string
|
|
os:
|
|
type: string
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
|
|
/ping:
|
|
get:
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ServerInfo"
|
|
|
|
/getTokenConfiguration:
|
|
post:
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
token:
|
|
type: string
|
|
os:
|
|
type: string
|
|
summary: "Returns levels of notifications user currently subscribed to"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TokenConfiguration"
|
|
|
|
/setTokenConfiguration:
|
|
post:
|
|
summary: "Sets levels of notifications user is subscribed to; also saves some user info, like lang or app version"
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TokenConfiguration"
|
|
- type: object
|
|
required:
|
|
- token
|
|
- os
|
|
properties:
|
|
token:
|
|
type: "string"
|
|
os:
|
|
type: "string"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
|
|
/enqueue:
|
|
post:
|
|
summary: "Puts push in send queue. Push body should be any descendant of `/components/schemas/PushNotificationBase`"
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
oneOf:
|
|
- $ref: "#/components/schemas/PushNotificationLightningInvoicePaid"
|
|
- $ref: "#/components/schemas/PushNotificationOnchainAddressGotPaid"
|
|
- $ref: "#/components/schemas/PushNotificationOnchainAddressGotUnconfirmedTransaction"
|
|
- $ref: "#/components/schemas/PushNotificationTxidGotConfirmed"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
|
|
components:
|
|
schemas:
|
|
ServerInfo:
|
|
type: "object"
|
|
properties:
|
|
name:
|
|
type: "string"
|
|
description:
|
|
type: "string"
|
|
version:
|
|
type: "string"
|
|
uptime:
|
|
type: "number"
|
|
last_processed_block:
|
|
type: "number"
|
|
send_queue_size:
|
|
type: "number"
|
|
sent_24h:
|
|
type: "number"
|
|
|
|
NotificationLevel:
|
|
type: string
|
|
enum:
|
|
- transactions
|
|
- news
|
|
- price
|
|
- tips
|
|
|
|
TokenConfiguration:
|
|
type: "object"
|
|
properties:
|
|
level_all:
|
|
type: "boolean"
|
|
level_transactions:
|
|
type: "boolean"
|
|
level_news:
|
|
type: "boolean"
|
|
level_price:
|
|
type: "boolean"
|
|
level_tips:
|
|
type: "boolean"
|
|
lang:
|
|
type: "string"
|
|
app_version:
|
|
type: "string"
|
|
|
|
LightningInvoiceSettledNotification:
|
|
description: object thats posted to GroundControl to notify end-user that his specific invoice was paid by someone
|
|
type: "object"
|
|
properties:
|
|
memo:
|
|
type: "string"
|
|
description: "text that was embedded in invoice paid"
|
|
preimage:
|
|
type: "string"
|
|
description: "hex string preimage"
|
|
hash:
|
|
type: "string"
|
|
description: "hex string preimage hash"
|
|
amt_paid_sat:
|
|
type: "number"
|
|
description: "exactly how much satoshis was paid to make this invoice settked (>= invoice amount)"
|
|
|
|
PushNotificationBase:
|
|
description: payload for push notification delivered to phone
|
|
type: object
|
|
required:
|
|
- type
|
|
- level
|
|
- os
|
|
- token
|
|
properties:
|
|
"type":
|
|
type: "integer"
|
|
enum:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- 4
|
|
- 5
|
|
description: >
|
|
type:
|
|
* `1` - Your lightning invoice was paid
|
|
* `2` - New transaction to one of your addresses
|
|
* `3` - New unconfirmed transaction to one of your addresses
|
|
* `4` - Transaction confirmed
|
|
* `5` - Arbitrary text message
|
|
"token":
|
|
type: "string"
|
|
"os":
|
|
type: "string"
|
|
enum:
|
|
- "android"
|
|
- "ios"
|
|
badge:
|
|
type: "integer"
|
|
level:
|
|
$ref: "#/components/schemas/NotificationLevel"
|
|
|
|
PushNotificationLightningInvoicePaid:
|
|
allOf: # Combines PushNotificationBase and the inline model
|
|
- $ref: "#/components/schemas/PushNotificationBase"
|
|
- type: object
|
|
required:
|
|
- sat
|
|
- hash
|
|
- memo
|
|
properties:
|
|
type:
|
|
type: "integer"
|
|
enum: [1]
|
|
level:
|
|
type: "string"
|
|
enum: ["transactions"]
|
|
sat:
|
|
type: "integer"
|
|
description: amount of satoshis
|
|
hash:
|
|
type: "string"
|
|
description: hash of specific ln invoice preimage
|
|
memo:
|
|
type: "string"
|
|
description: text attached to bolt11
|
|
|
|
PushNotificationOnchainAddressGotPaid:
|
|
allOf: # Combines PushNotificationBase and the inline model
|
|
- $ref: "#/components/schemas/PushNotificationBase"
|
|
- type: object
|
|
required:
|
|
- address
|
|
- sat
|
|
- txid
|
|
properties:
|
|
type:
|
|
type: "integer"
|
|
enum: [2]
|
|
level:
|
|
type: "string"
|
|
enum: ["transactions"]
|
|
sat:
|
|
type: "integer"
|
|
description: amount of satoshis
|
|
address:
|
|
type: "string"
|
|
description: user's onchain address that has incoming transaction
|
|
txid:
|
|
type: "string"
|
|
description: txid of the transaction where this address is one of the outputs
|
|
|
|
PushNotificationOnchainAddressGotUnconfirmedTransaction:
|
|
allOf: # Combines PushNotificationBase and the inline model
|
|
- $ref: "#/components/schemas/PushNotificationBase"
|
|
- type: object
|
|
required:
|
|
- address
|
|
- sat
|
|
- txid
|
|
properties:
|
|
type:
|
|
type: "integer"
|
|
enum: [3]
|
|
level:
|
|
type: "string"
|
|
enum: ["transactions"]
|
|
sat:
|
|
type: "integer"
|
|
description: amount of satoshis
|
|
address:
|
|
type: "string"
|
|
description: user's onchain address that has incoming transaction
|
|
txid:
|
|
type: "string"
|
|
description: txid of the transaction where this address is one of the outputs
|
|
|
|
PushNotificationTxidGotConfirmed:
|
|
allOf: # Combines PushNotificationBase and the inline model
|
|
- $ref: "#/components/schemas/PushNotificationBase"
|
|
- type: object
|
|
required:
|
|
- txid
|
|
properties:
|
|
type:
|
|
type: "integer"
|
|
enum: [4]
|
|
level:
|
|
type: "string"
|
|
enum: ["transactions"]
|
|
txid:
|
|
type: "string"
|
|
description: txid of the transaction that got confirmed
|
|
|
|
PushNotificationMessage:
|
|
allOf: # Combines PushNotificationBase and the inline model
|
|
- $ref: "#/components/schemas/PushNotificationBase"
|
|
- type: object
|
|
required:
|
|
- text
|
|
properties:
|
|
type:
|
|
type: "integer"
|
|
enum: [5]
|
|
text:
|
|
type: "string"
|
|
description: custom text thats displayed on push notification buble
|