{ "paths": { "/api/v1/stores/{storeId}/apps/pos": { "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store ID", "schema": { "type": "string" } } ], "post": { "operationId": "Apps_CreatePointOfSaleApp", "summary": "Create a new Point of Sale app", "description": "Point of Sale app allows accepting payments for items in a virtual store", "requestBody": { "x-name": "request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePointOfSaleAppRequest" } } }, "required": true, "x-position": 1 }, "responses": { "200": { "description": "Created app details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PointOfSaleAppData" } } } }, "422": { "description": "Unable to validate the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationProblemDetails" } } } } }, "tags": [ "Apps" ], "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/apps/pos/{appId}": { "parameters": [ { "name": "appId", "in": "path", "required": true, "description": "App ID", "schema": { "type": "string" } } ], "put": { "operationId": "Apps_PutPointOfSaleApp", "summary": "Update a Point of Sale app", "description": "Use this endpoint for updating the properties of a POS app", "requestBody": { "x-name": "request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePointOfSaleAppRequest" } } }, "required": true, "x-position": 1 }, "responses": { "200": { "description": "App details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PointOfSaleAppData" } } } }, "422": { "description": "Unable to validate the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationProblemDetails" } } } } }, "tags": [ "Apps" ], "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/stores/{storeId}/apps/crowdfund": { "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store ID", "schema": { "type": "string" } } ], "post": { "operationId": "Apps_CreateCrowdfundApp", "summary": "Create a new Crowdfund app", "requestBody": { "x-name": "request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCrowdfundAppRequest" } } }, "required": true, "x-position": 1 }, "responses": { "200": { "description": "Created app details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CrowdfundAppData" } } } }, "422": { "description": "Unable to validate the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationProblemDetails" } } } } }, "tags": [ "Apps", "Crowdfund" ], "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/apps/{appId}": { "get": { "tags": [ "Apps" ], "operationId": "Apps_GetPointOfSaleApp", "summary": "Get basic app data", "description": "Returns basic app data shared between all types of apps", "parameters": [ { "name": "appId", "in": "path", "required": true, "description": "The app ID", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Basic app data", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BasicAppData" } } } }, "404": { "description": "App with specified ID was not found" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] }, "delete": { "tags": [ "Apps" ], "operationId": "Apps_DeletePointOfSaleApp", "summary": "Delete app", "description": "Deletes apps with specified ID", "parameters": [ { "name": "appId", "in": "path", "required": true, "description": "The app ID", "schema": { "type": "string" } } ], "responses": { "200": { "description": "App was deleted" }, "404": { "description": "App with specified ID was not found" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/stores/{storeId}/apps": { "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store ID", "schema": { "type": "string" } } ], "get": { "tags": [ "Apps" ], "operationId": "Apps_GetAllAppsForStore", "summary": "Get basic app data for all apps for a store", "description": "Returns basic app data for all apps for a store", "responses": { "200": { "description": "Array of basic app data object", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BasicAppData" } } } } } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/apps": { "get": { "tags": [ "Apps" ], "operationId": "Apps_GetAllApps", "summary": "Get basic app data for all apps for all stores for a user", "description": "Returns basic app data for all apps for all stores", "responses": { "200": { "description": "Array of basic app data object", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BasicAppData" } } } } } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } } }, "components": { "schemas": { "PointOfSaleAppData": { "allOf": [ { "$ref": "#/components/schemas/BasicAppData" }, { } ] }, "CrowdfundAppData": { "allOf": [ { "$ref": "#/components/schemas/BasicAppData" }, { } ] }, "BasicAppData": { "type": "object", "properties": { "id": { "type": "string", "description": "Id of the app", "example": "3ki4jsAkN4u9rv1PUzj1odX4Nx7s" }, "name": { "type": "string", "description": "Name given to the app when it was created", "example": "my test app" }, "storeId": { "type": "string", "description": "Id of the store to which the app belongs", "example": "9CiNzKoANXxmk5ayZngSXrHTiVvvgCrwrpFQd4m2K776" }, "created": { "type": "integer", "example": 1651554744, "description": "UNIX timestamp for when the app was created" }, "appType": { "type": "string", "example": "PointOfSale", "description": "Type of the app which was created" } } }, "CreatePointOfSaleAppRequest": { "type": "object", "properties": { "appName": { "type": "string", "description": "The name of the app (shown in admin UI)", "nullable": false }, "title": { "type": "string", "description": "The title of the app (shown to the user)", "nullable": true }, "description": { "type": "string", "description": "The description of the app", "nullable": true }, "template": { "type": "string", "description": "Template for items available in the app", "nullable": true }, "defaultView": { "type": "string", "description": "Template for items available in the app", "nullable": true, "x-enumNames": [ "Static", "Cart", "Light", "Print" ], "enum": [ "Static", "Cart", "Light", "Print" ] }, "currency": { "type": "string", "description": "Currency to use for the app. Defaults to the currency used by the store if not specified", "example": "BTC", "nullable": true }, "showCustomAmount": { "type": "boolean", "description": "Whether to include a special item in the store which allows user to input a custom payment amount", "default": false, "nullable": true }, "showDiscount": { "type": "boolean", "description": "Whether to allow user to input a discount amount. Applies to Cart view only. Not recommended for customer self-checkout", "default": true, "nullable": true }, "enableTips": { "type": "boolean", "description": "Whether to allow user to input a tip amount. Applies to Cart and Light views only", "default": true, "nullable": true }, "customAmountPayButtonText": { "type": "string", "description": "Payment button text which appears for items which allow user to input a custom amount", "default": "Pay", "nullable": true }, "fixedAmountPayButtonText": { "type": "string", "description": "Payment button text which appears for items which have a fixed price", "default": "Buy for {PRICE_HERE}", "nullable": true }, "tipText": { "type": "string", "description": "Prompt which appears next to the tip amount field if tipping is enabled", "default": "Do you want to leave a tip?", "nullable": true }, "customCSSLink": { "type": "string", "description": "Link to a custom CSS stylesheet to be used in the app", "nullable": true }, "embeddedCSS": { "type": "string", "description": "Custom CSS to embed into the app", "nullable": true }, "notificationUrl": { "type": "string", "description": "Callback notification url to POST to once when invoice is paid for and once when there are enough blockchain confirmations", "nullable": true }, "redirectUrl": { "type": "string", "description": "URL to redirect user to once invoice is paid", "nullable": true }, "redirectAutomatically": { "type": "boolean", "description": "Whether to redirect user to redirect URL automatically once invoice is paid. Defaults to what is set in the store settings", "nullable": true }, "requiresRefundEmail": { "type": "boolean", "description": "Whether to redirect user to redirect URL automatically once invoice is paid. Defaults to what is set in the store settings", "nullable": true }, "checkoutType": { "$ref": "#/components/schemas/CheckoutType" }, "formId": { "type": "string", "description": "Form ID to request customer data", "nullable": true } } }, "CreateCrowdfundAppRequest": { "type": "object", "properties": { "appName": { "type": "string", "description": "The name of the app (shown in admin UI)", "example": "Kukkstarter", "nullable": false }, "title": { "type": "string", "description": "The title of the app (shown to the user)", "example": "My crowdfund app", "nullable": true }, "description": { "type": "string", "description": "The description of the app (shown to the user)", "example": "My app description", "nullable": true }, "enabled": { "type": "boolean", "description": "Determines if the app is enabled to be viewed by everyone", "default": true, "nullable": true }, "enforceTargetAmount": { "type": "boolean", "description": "Will not allow contributions over the set target amount", "default": false, "nullable": true }, "startDate": { "type": "number", "description": "UNIX timestamp for crowdfund start time (https://www.unixtimestamp.com/)", "allOf": [ {"$ref": "#/components/schemas/UnixTimestamp"}], "example": 768658369, "nullable": true }, "endDate": { "type": "number", "description": "UNIX timestamp for crowdfund end time (https://www.unixtimestamp.com/)", "allOf": [ {"$ref": "#/components/schemas/UnixTimestamp"}], "example": 771336769, "nullable": true }, "targetCurrency": { "type": "string", "description": "Target currency for the crowdfund. Defaults to the currency used by the store if not specified", "example": "BTC", "nullable": true }, "targetAmount": { "type": "number", "description": "Target amount for the crowdfund", "example": 420, "nullable": true }, "customCSSLink": { "type": "string", "description": "Link to a custom CSS stylesheet to be used in the app", "nullable": true }, "mainImageUrl": { "type": "string", "description": "URL for image to be used as a cover image for the app", "nullable": true }, "embeddedCSS": { "type": "string", "description": "Custom CSS to embed into the app", "nullable": true }, "perksTemplate": { "type": "string", "description": "YAML template of perks available in the app", "example": "test_perk:\r\n price: 100\r\n title: test perk\r\n price_type: \"fixed\" \r\n disabled: false", "nullable": true }, "notificationUrl": { "type": "string", "description": "Callback notification url to POST to once when invoice is paid for and once when there are enough blockchain confirmations", "nullable": true }, "tagline": { "type": "string", "description": "Tagline for the app (shown to the user)", "example": "I can't believe it's not butter", "nullable": true }, "disqusShortname": { "type": "string", "description": "Disqus shortname to used for the app. Enables Disqus functionality if set.", "nullable": true }, "soundsEnabled": { "type": "boolean", "description": "Enables sounds on new contributions if set to true", "default": false, "nullable": true }, "animationsEnabled": { "type": "boolean", "description": "Enables background animations on new contributions if set to true", "default": false, "nullable": true }, "resetEveryAmount": { "type": "number", "description": "Contribution goal reset frequency amount. Must be used in conjunction with resetEvery and startDate.", "default": 1, "nullable": true }, "resetEvery": { "type": "string", "description": "Contribution goal reset frequency. Must be used in conjunction with resetEveryAmount and startDate.", "nullable": true, "default": "Never", "x-enumNames": [ "Never", "Hour", "Day", "Month", "Year" ], "enum": [ "Never", "Hour", "Day", "Month", "Year" ] }, "displayPerksValue": { "type": "boolean", "description": "Enables background animations on new contributions if set to true", "default": false, "nullable": true }, "sortPerksByPopularity": { "type": "boolean", "description": "Sorts perks by popularity if set to true", "default": false, "nullable": true }, "sounds": { "type": "array", "description": "Array of custom sounds to use on new contributions", "items": { "type": "string" }, "nullable": true, "example": [ "https://github.com/ClaudiuHKS/AdvancedQuakeSounds/raw/master/sound/AQS/doublekill.wav" ] }, "animationColors": { "type": "array", "description": "Array of custom HEX colors to use for background animations on new contributions", "items": { "type": "string" }, "nullable": true, "example": ["#FF0000", "#00FF00", "#0000FF"] } } } } }, "tags": [ { "name": "Apps", "description": "App operations" } ] }