{
  "openapi": "3.0.4",
  "info": {
    "title": "Ecrypt.Gateway.Api",
    "description": "Ecrypt API",
    "contact": {
      "name": "Ecrypt",
      "url": "https://www.ecrypt.com/",
      "email": "Engineering@Ecrypt.com"
    },
    "version": "1.0.0.0"
  },
  "servers": [
    {
      "url": "https://api.ecrypt.com",
      "description": "Production"
    }
  ],
  "paths": {
    "/v1/customers": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "List Customers",
        "description": "Returns a list of `ACTIVE` customers from your vault.  The default sort order is `CREATED DATE DESCENDING`.",
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "description": "Page being requested.\r\n\r\nDefault: 1",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "example": 1
            },
            "example": 1
          },
          {
            "name": "Size",
            "in": "query",
            "description": "Size of the page of results being requested.\r\n\r\nDefault: 100",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden"
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Create Customer",
        "description": "Create a new customer in your vault.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerCreateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerCreateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerCreateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/customers/{Customer}": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get Customer",
        "description": "Get the specified customer.",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "description": "`Customer` is the Ecrypt customer identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Customers"
        ],
        "summary": "Delete Customer",
        "description": "Delete the customer from your customer vault.",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "description": "`Customer` is the Ecrypt customer identifier.",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/customers/{Customer}/subscriptions": {
      "get": {
        "tags": [
          "Customers Subscription"
        ],
        "summary": "List Customer Subscriptions",
        "description": "/// Get the customer and a list of subscriptions.  The default sort order is `created date descending`.",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Customers Subscription"
        ],
        "summary": "Create Customer Subscription",
        "description": "Create a customer subscription for a customer.",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "description": "`Customer` is the Ecrypt customer identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerSubscriptionCreateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerSubscriptionCreateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerSubscriptionCreateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/customers/{Customer}/subscriptions/{Subscription}": {
      "get": {
        "tags": [
          "Customers Subscription"
        ],
        "summary": "Get Customer Subscription",
        "description": "Pull a Customer Subscription by customer id and customer subscription id",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "description": "`Customer` is the Ecrypt customer identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          },
          {
            "name": "Subscription",
            "in": "path",
            "description": "`Subscription` is the Ecrypt subscription identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Customers Subscription"
        ],
        "summary": "Modify Customer Subscriptions Price",
        "description": "Update a customer subscription to pause it.",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "description": "`Customer` is the Ecrypt customer identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          },
          {
            "name": "Subscription",
            "in": "path",
            "description": "`Subscription` is the Ecrypt Subscription identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerSubscriptionModifyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerSubscriptionModifyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerSubscriptionModifyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Customers Subscription"
        ],
        "summary": "Cancel Customer Subscription",
        "description": "Cancel a customer subscription",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "description": "`Customer` is the Ecrypt customer identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          },
          {
            "name": "Subscription",
            "in": "path",
            "description": "`Subscription` is the Ecrypt Subscription identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/customers/{Customer}/subscriptions/{Subscription}/suspend": {
      "put": {
        "tags": [
          "Customers Subscription"
        ],
        "summary": "Suspend Customer Subscription",
        "description": "Updates a customer subscription to pause it.",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "description": "`Customer` is the Ecrypt customer identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          },
          {
            "name": "Subscription",
            "in": "path",
            "description": "`Subscription` is the Ecrypt Subscription identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/customers/{Customer}/subscriptions/{Subscription}/resume": {
      "put": {
        "tags": [
          "Customers Subscription"
        ],
        "summary": "Resume Customer Subscriptions",
        "description": "Update a customer subscription to pause it.",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "description": "`Customer` is the Ecrypt customer identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          },
          {
            "name": "Subscription",
            "in": "path",
            "description": "`Subscription` is the Ecrypt Subscription identifier.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            },
            "example": "00000000-0000-0000-0000-000000000000"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/customers/{Customer}/wallet": {
      "get": {
        "tags": [
          "Customers Wallet"
        ],
        "summary": "List Customer Wallet",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "Page being requested.\r\n\r\nDefault: 1",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "example": 1
            },
            "example": 1
          },
          {
            "name": "Size",
            "in": "query",
            "description": "Size of the page of results being requested.\r\n\r\nDefault: 100",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Customers Wallet"
        ],
        "summary": "Create Customer Wallet Payment Method",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerWalletCreateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerWalletCreateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerWalletCreateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/customers/{Customer}/wallet/{Wallet}": {
      "get": {
        "tags": [
          "Customers Wallet"
        ],
        "summary": "Get Customer Wallet Payment Method",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          },
          {
            "name": "Wallet",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Customers Wallet"
        ],
        "summary": "Update Customers default payment method",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          },
          {
            "name": "Wallet",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerWalletModifyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerWalletModifyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.CustomerWalletModifyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Customers Wallet"
        ],
        "summary": "Delete Customer Wallet Payment Method",
        "parameters": [
          {
            "name": "Customer",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          },
          {
            "name": "Wallet",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/dynamiccheckout": {
      "post": {
        "tags": [
          "Dynamic Checkout"
        ],
        "summary": "Create Dynamic Checkout",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.DynamicCheckoutCreateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.DynamicCheckoutCreateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.DynamicCheckoutCreateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/subscriptions": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "List Subscriptions",
        "description": "Get a list of `ACTIVE` subscription plans. The default sort order is `CREATED DATE DESCENDING`.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Create Subscription",
        "description": "Create a new merchant subscription template.",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Subscriptions.SubscriptionCreateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Subscriptions.SubscriptionCreateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Subscriptions.SubscriptionCreateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/subscriptions/{Subscription}": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Get Subscription",
        "description": "Get the specified subscription.",
        "parameters": [
          {
            "name": "Subscription",
            "in": "path",
            "description": "`Subscription` is the Ecrypt subscription identifier.",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Delete Subscription Plan",
        "description": "Delete the subscription plan.  All customer subscriptions associated with this subscription plan must be canceled before you can delete the plan.",
        "parameters": [
          {
            "name": "Subscription",
            "in": "path",
            "description": "`Subscription` is the Ecrypt subscription identifier.",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/terminals": {
      "get": {
        "tags": [
          "Terminals"
        ],
        "summary": "List",
        "description": "Get a list of terminals.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Terminals"
        ],
        "summary": "Create",
        "description": "Create a new terminal.\r\n\r\nSample request:\r\n\r\nPOST v1/terminals/\r\n{\r\n    \"nickname\":\"NICKNAME\",\r\n    \"registration_code\":\"******\"\r\n}",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Terminals.TerminalRegisterRequestModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Terminals.TerminalRegisterRequestModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Terminals.TerminalRegisterRequestModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/terminals/{Terminal}": {
      "get": {
        "tags": [
          "Terminals"
        ],
        "summary": "Get",
        "description": "Get the specified terminal.",
        "parameters": [
          {
            "name": "Terminal",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string",
              "default": "00000000-0000-0000-0000-000000000000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Terminals"
        ],
        "summary": "Delete",
        "description": "Delete the specified terminal.",
        "parameters": [
          {
            "name": "Terminal",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 8,
              "pattern": "^[0-9A-Za-z-]*$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tokens": {
      "post": {
        "tags": [
          "Tokens"
        ],
        "summary": "Create Token",
        "description": "Payment Tokens support credit card's and ACH bank account information.  Tokens, can be for one time use, or stored and saved to a customers profile.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Tokens.TokenRequet"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Tokens.TokenRequet"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Tokens.TokenRequet"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/authorize": {
      "post": {
        "tags": [
          "Transactions"
        ],
        "summary": "Authorize",
        "description": "Authorization only endpoint.  Merchants will need to ensure they capture the transaction.\r\n\r\n***Supported Payment Methods***\r\n- `Credit Card`\r\n- `Terminal/Cloud EMV`\r\n- `Check/ACH`\r\n- `Customer`\r\n- `Wallet`",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionAuthorizeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionAuthorizeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionAuthorizeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/capture": {
      "post": {
        "tags": [
          "Transactions"
        ],
        "summary": "Capture",
        "description": "`CAPTURE` a previous 'AUTHORIZTION'.  Capture for up to the amount authorized.  Specific merchants with\r\ntip at time of sale or tip adjust enabled can capture over the authorization amount.",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionCaptureRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionCaptureRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionCaptureRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/credit": {
      "post": {
        "tags": [
          "Transactions"
        ],
        "summary": "Credit",
        "description": "Credit or blind credit will return the specified amount to the payment method.  This service must be enabled on your merchant account.\r\n***Supported Payment Methods***\r\n- `Credit Card`\r\n- `Terminal/Cloud EMV`\r\n- `Check/ACH`\r\n- `Customer`\r\n- `Wallet`",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionCreditRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionCreditRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionCreditRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/refund": {
      "post": {
        "tags": [
          "Transactions"
        ],
        "summary": "Refund",
        "description": "`REFUND` a settled transaction.  Refund amount cannot exceed settled amount.",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionRefundRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionRefundRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionRefundRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/sale": {
      "post": {
        "tags": [
          "Transactions"
        ],
        "summary": "Sale",
        "description": "Sale combines 'AUTHORIZATION' and 'CAPTURE' into a single endpoint. \r\n***Supported Payment Methods***\r\n- `Credit Card`\r\n- `Terminal/Cloud EMV`\r\n- `Check/ACH`\r\n- `Customer`\r\n- `Wallet`",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionSaleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionSaleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionSaleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/validate": {
      "post": {
        "tags": [
          "Transactions"
        ],
        "summary": "Validate",
        "description": "Validate that a payment method is valid and supported.\r\n***Supported Payment Methods***\r\n- `Credit Card`\r\n- `Terminal/Cloud EMV`\r\n- `Check/ACH`\r\n- `Customer`\r\n- `Wallet`",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Validate.TransactionValidateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Validate.TransactionValidateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Validate.TransactionValidateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/void": {
      "post": {
        "tags": [
          "Transactions"
        ],
        "summary": "Void",
        "description": "`VOID` an unsettled transaction.",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionVoidRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionVoidRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionVoidRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions": {
      "get": {
        "tags": [
          "Transactions"
        ],
        "summary": "List Transactions",
        "description": "Get a list of transactions.  The default sort order is `CREATED DATE DESCENDING`.",
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "description": "Page being requested.\r\n\r\nDefault: 1",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "example": 1
            },
            "example": 1
          },
          {
            "name": "Size",
            "in": "query",
            "description": "Size of the page of results being requested.\r\n\r\nDefault: 100",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/{id}": {
      "get": {
        "tags": [
          "Transactions"
        ],
        "summary": "Get a Transaction",
        "description": "",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.IActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Ecrypt.Gateway.Api.Core.Model.Check": {
        "required": [
          "accountNumber",
          "routingNumber"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.,`'()@#!?\\/\\\\:;|+=@%&]*$",
            "type": "string",
            "description": "Name as it appears on the check.\r\n\r\nExample: John Doe",
            "nullable": true
          },
          "account_number": {
            "maxLength": 20,
            "minLength": 7,
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "Account Number as it appears on the check.\r\n\r\nExample: 123123123"
          },
          "routing_number": {
            "maxLength": 20,
            "minLength": 8,
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "Routing Number as it appears on the check.\r\n\r\nExample: 123123123"
          },
          "check_number": {
            "maxLength": 8,
            "minLength": 0,
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "Check Number\r\n\r\nExample: 100",
            "nullable": true
          },
          "account_type": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.WebAPI.Enums.AccountType"
          },
          "verification": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.CheckVerification"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.CheckVerification": {
        "type": "object",
        "properties": {
          "dob": {
            "maxLength": 14,
            "minLength": 8,
            "pattern": "^[0-9A-Za-z _\\-\\.\\/]*$",
            "type": "string",
            "description": "Date of Birth\r\n\r\nFormat: MM/DD/YYYY\r\nExample: 01/17/2006 = January 17th 2006",
            "nullable": true
          },
          "ssn": {
            "maxLength": 14,
            "minLength": 8,
            "pattern": "^[0-9A-Za-z _\\-\\.\\/]*$",
            "type": "string",
            "description": "Social Security Number\r\n\r\nFormat: DDD-DD-DDDD\r\nExample: 123-45-6789",
            "nullable": true
          },
          "drivers_license": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.CheckVerificationDriversLicense"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.CheckVerificationDriversLicense": {
        "type": "object",
        "properties": {
          "number": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.\\/]*$",
            "type": "string",
            "description": "Number\r\n\r\nExample: A123456789",
            "nullable": true
          },
          "state": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.\\/]*$",
            "type": "string",
            "description": "State\r\n\r\nFormat: CC\r\nExample: CA = California",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Customers.CustomerCreateRequest": {
        "type": "object",
        "properties": {
          "first_name": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.,`'()@#!?\\/\\\\:;|+=@%&]*$",
            "type": "string",
            "description": "Customers first name.",
            "default": "John",
            "nullable": true
          },
          "last_name": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.,`'()@#!?\\/\\\\:;|+=@%&]*$",
            "type": "string",
            "description": "Customers last name.",
            "default": "Doe",
            "nullable": true
          },
          "company": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.,`'()@#!?\\/\\\\:;|+=@%&]*$",
            "type": "string",
            "description": "Company associated with the customer.",
            "default": "US Oil Supply",
            "nullable": true
          },
          "merchant_identifier": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.,`'()@#!?\\/\\\\:;|+=@%&]*$",
            "type": "string",
            "description": "Merchants customer identifier. This field can be used as a reference back to your internal data system.",
            "default": "EID-987654-321",
            "nullable": true
          },
          "phone_number": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.,`'()@#!?\\/\\\\:;|+=@%&]*$",
            "type": "string",
            "description": "Customers phone number.  This could be a cellular, land line, or a fax number.",
            "default": "555-555-555",
            "nullable": true
          },
          "email_address": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.,`'()@#!?\\/\\\\:;|+=@%&]*$",
            "type": "string",
            "description": "Customers email address.",
            "default": "email@email.com",
            "nullable": true
          },
          "shipping_address": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Address"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata associated with the customer.  This is a key value pair.",
            "nullable": true
          },
          "initiated_by_user_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Customers.CustomerSubscriptionCreateRequest": {
        "required": [
          "payment"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "subscription_id": {
            "type": "string"
          },
          "start": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "skip_first_payment": {
            "type": "boolean"
          },
          "payment": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.Payment"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Customers.CustomerSubscriptionModifyRequest": {
        "type": "object",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.SubscriptionAmount"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Customers.CustomerWalletCreateRequest": {
        "type": "object",
        "properties": {
          "token": {
            "maxLength": 64,
            "minLength": 8,
            "pattern": "^[0-9A-Za-z-]*$",
            "type": "string",
            "description": "Token generated from the tokens endpoint",
            "default": "00000000-0000-0000-0000-000000000000",
            "nullable": true
          },
          "transaction_id": {
            "maxLength": 64,
            "minLength": 8,
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "Approved Transaction ID",
            "default": "0",
            "nullable": true
          },
          "default": {
            "type": "boolean",
            "description": "Make this the default payment method"
          },
          "billing_address": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Address"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Customers.CustomerWalletModifyRequest": {
        "type": "object",
        "properties": {
          "default": {
            "type": "boolean",
            "description": "Make this the default payment method",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Customers.Payment": {
        "required": [
          "stored"
        ],
        "type": "object",
        "properties": {
          "stored": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Customers.Stored"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Customers.Stored": {
        "required": [
          "wallet"
        ],
        "type": "object",
        "properties": {
          "wallet": {
            "minLength": 1,
            "type": "string"
          },
          "initiated_by": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Customers.SubscriptionAmount": {
        "required": [
          "total"
        ],
        "type": "object",
        "properties": {
          "tax": {
            "maximum": 999999999.99,
            "minimum": 0,
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "surcharge": {
            "maximum": 999999999.99,
            "minimum": 0,
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "subtotal": {
            "maximum": 999999999.99,
            "minimum": 0,
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "total": {
            "maximum": 999999999.99,
            "minimum": 0,
            "type": "number",
            "format": "decimal"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.Appearance": {
        "type": "object",
        "properties": {
          "invoice_background_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "invoice_button_background_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "invoice_text_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "invoice_accent_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "invoice_border_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "invoice_button_text_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "form_background_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "form_text_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "form_accent_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "form_border_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "form_button_background_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "form_button_text_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "alert_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "input_variant": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[A-Za-z]*$",
            "type": "string",
            "description": "Use `Variant Guide`",
            "nullable": true
          },
          "input_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "success_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "mobile_background_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "invoice_mobile_background_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "invoice_icon_theme": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[A-Za-z]*$",
            "type": "string",
            "description": "Use `Theme Guide`",
            "nullable": true
          },
          "invoice_mobile_text_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "mobile_text_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "mobile_button_background_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "mobile_button_text_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "mobile_icon_theme": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[A-Za-z]*$",
            "type": "string",
            "description": "Use `Theme Guide`",
            "nullable": true
          },
          "form_icon_theme": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[A-Za-z]*$",
            "type": "string",
            "description": "Use `Theme Guide`",
            "nullable": true
          },
          "form_input_text_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "form_input_background_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "mobile_input_text_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "mobile_input_background_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "mobile_input_border_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "mobile_accent_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "description": "Use `Color Guide`",
            "nullable": true
          },
          "form_title_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "nullable": true
          },
          "form_label_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "nullable": true
          },
          "mobile_title_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "nullable": true
          },
          "mobile_label_color": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "nullable": true
          },
          "tab_background_selected": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "nullable": true
          },
          "tab_background_default": {
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z \\-\\.,%()\t#]*$",
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The Appearance object includes various properties that define the appearance of the invoice and form. Each property is optional and should be a string representing a color code or a theme.\r\n\r\n`Color Guide`\r\n\r\nExample: #000000\r\n*** Supported Formats ***\r\n- `Hexadecimal Format` #000000\r\n- `RGB Format` rgb(0, 0, 0)\r\n- `RGBA Format` rgba(0, 0, 0, 1)\r\n- `HSL Format` hsl(0, 0%, 0%)\r\n- `HSLA Format` hsla(0, 0%, 0%, 1)\r\n- `Named Colors` black\r\n            \r\n`Theme Guide`\r\n\r\nDefault: dark\r\n*** Supported Values ***\r\n- `dark`\r\n- `light`\r\n            \r\n`Variant Guide`\r\n\r\nDefault: standard\r\n*** Supported Values ***\r\n- `filled`\r\n- `outlined`\r\n- `standard`",
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.Customer": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The customer's name.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The customer's email address.",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "The customer's street address line 1.",
            "nullable": true
          },
          "address2": {
            "type": "string",
            "description": "The customer's street address line 2.",
            "nullable": true
          },
          "city": {
            "type": "string",
            "description": "The customer's city.",
            "nullable": true
          },
          "state": {
            "type": "string",
            "description": "The customer's state.",
            "nullable": true
          },
          "zip": {
            "type": "string",
            "description": "The customer's ZIP or postal code.",
            "nullable": true
          },
          "country": {
            "type": "string",
            "description": "The customer's country.",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "The customer's country.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.DynamicCheckoutCreateRequest": {
        "required": [
          "items",
          "total"
        ],
        "type": "object",
        "properties": {
          "customer_info": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.Customer"
          },
          "appearance": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.Appearance"
          },
          "invoice_info": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.Invoice"
          },
          "iframe": {
            "type": "boolean",
            "nullable": true
          },
          "one_time_payment": {
            "type": "boolean",
            "nullable": true
          },
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.WebAPI.Enums.CurrencyCode"
              }
            ],
            "nullable": true
          },
          "tax": {
            "maximum": 999999999.99,
            "minimum": 0,
            "type": "number",
            "description": "",
            "format": "double",
            "nullable": true
          },
          "surcharge": {
            "maximum": 999999999.99,
            "minimum": 0,
            "type": "number",
            "description": "",
            "format": "double",
            "nullable": true
          },
          "discount": {
            "maximum": 999999999.99,
            "minimum": 0,
            "type": "number",
            "description": "",
            "format": "double",
            "nullable": true
          },
          "subtotal": {
            "maximum": 999999999.99,
            "minimum": 0,
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "total": {
            "maximum": 999999999.99,
            "minimum": 0.01,
            "type": "number",
            "description": "Discount Percentage",
            "format": "double"
          },
          "collect_shipping": {
            "type": "boolean",
            "description": "",
            "nullable": true
          },
          "send_receipt": {
            "type": "boolean",
            "description": "\r\nDefault: false\r\n\r\nExample: false"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.Item"
            },
            "description": "At least one is required",
            "nullable": true
          },
          "thank_you_url": {
            "type": "string",
            "description": "The Thank You Url to show when an order is placed at the end of the checkout flow.",
            "nullable": true
          },
          "subscription": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.DynamicSubscription"
          },
          "customer_defined_field": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "submit_button_text": {
            "type": "string",
            "nullable": true
          },
          "allow_ach": {
            "type": "boolean",
            "nullable": true
          },
          "three_ds_enabled": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.DynamicSubscription": {
        "type": "object",
        "properties": {
          "billing_cycle": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.WebAPI.Enums.SubscriptionCycleType"
          },
          "billing_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "label": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.Invoice": {
        "required": [
          "dueDate",
          "invoiceDate",
          "number"
        ],
        "type": "object",
        "properties": {
          "number": {
            "maxLength": 20,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.\\/]*$",
            "type": "string",
            "description": "The invoice number from the merchants data system."
          },
          "invoice_date": {
            "maxLength": 14,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.\\/]*$",
            "type": "string",
            "description": "The date the invoice was issued.\r\n\r\nExample: 02/01/2025\r\nExample: 02-01-2025\r\nExample: 2.1.2025\r\nExample: Jan 1 2030\r\nExample: Jan 1 2030"
          },
          "due_date": {
            "maxLength": 14,
            "minLength": 0,
            "type": "string",
            "description": "The due date for payment.\r\n\r\nExample: 02/01/2025 = January 1 2030\r\nExample: 02/01/2025 = January 1 2030\r\nExample: 02/01/2025 = January 1 2030"
          }
        },
        "additionalProperties": false,
        "description": "Invoice details\r\n\r\nIf `null` invoice information will not display.",
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.DynamicCheckout.Item": {
        "required": [
          "name",
          "price",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 1000,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.,`'()@#!?\\/\\\\:;|+=@%&]*$",
            "type": "string"
          },
          "price": {
            "maximum": 999999999.99,
            "minimum": 0,
            "type": "number",
            "format": "double"
          },
          "quantity": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "maxLength": 2000,
            "minLength": 0,
            "pattern": "^[0-9A-Za-z _\\-\\.,`'()@#!?\\/\\\\:;|+=@%&]*$",
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Subscriptions.SubscriptionCreateRequest": {
        "required": [
          "amount",
          "cycle",
          "label"
        ],
        "type": "object",
        "properties": {
          "label": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[0-9A-Za-z _\\-\\.,`'()@#!?\\/\\\\:;|+=@%&]*$",
            "type": "string",
            "default": "Merchant Subscription 0001"
          },
          "cycle": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Subscriptions.SubscriptionCycle"
          },
          "amount": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Amount"
          },
          "installments": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "description": "Number of installments to run at the specified unit, and interval",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Subscriptions.SubscriptionCycle": {
        "type": "object",
        "properties": {
          "unit": {
            "type": "string",
            "description": "Unit for cycle\r\n***Supported Units***\r\n- `day`\r\n- `week`\r\n- `month`\r\n- `year`",
            "default": "month"
          },
          "interval": {
            "type": "integer",
            "description": "Interval for cycle\r\n***Supported Units***\r\n- `day, 1-365, 1 == Daily, 2 = every second day, 7 == once a week`\r\n- `week, 1-52, 1 == Every Week, 2 = every other week, will default to charge on Monday if no other Day of Cycle is not specified`\r\n- `Month, 1-12, 1== every month, 2 = every other month, will default to the day the subscription became active if day of cycle is not specified`\r\n- `Year, 1-500, 1== every year`",
            "format": "int32",
            "default": 1
          },
          "day_of_cycle": {
            "type": "integer",
            "description": "Day of cycle for the specified unit\r\n***Supported Units***\r\n- `day, not supported`\r\n- `week, 1-7, 1= monday 7 = sunday`\r\n- `month 1-31, if 31 is specified it will default to the last day of the month for all months with less that 31 days`\r\n- `year 1-365, any day in the year`",
            "format": "int32",
            "default": 1
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Terminals.PaymentTerminal": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 64,
            "minLength": 8,
            "pattern": "^[0-9A-Za-z-]*$",
            "type": "string",
            "description": "Payment Terminal Identifier, this can be found on your Ecrypt Dashboard under Setting/Device Management.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000"
          },
          "prompt_tip": {
            "type": "boolean",
            "description": "Prompt for Tip will display tip at time of sale options.  If your account does not support tip at time of sale this option will be ignored.",
            "nullable": true
          },
          "tip_amounts": {
            "type": "array",
            "items": {
              "type": "number",
              "format": "decimal"
            },
            "description": "Tip amounts in dollar format.  Terminals can support 3 or 4 tip amounts depending on the terminal.  Any extra items will be ignored.  This is required if you set Prompt for Tip to true.\r\n\r\nExample: [28.23, 33.88, 37.65, 41.41]",
            "nullable": true
          },
          "prompt_cvv": {
            "type": "boolean",
            "description": "Prompt for CVV/CVC will attempt to override the card verification requirement and force CVV/CVC input.",
            "nullable": true
          },
          "prompt_postal_code": {
            "type": "boolean",
            "description": "Prompt for Postal Code will allow the customer to enter their billing postal code.",
            "nullable": true
          },
          "prompt_amount_confirmation": {
            "type": "boolean",
            "description": "Prompt for Amount Confirmation will force the customer to approve the transaction amount.",
            "nullable": true
          },
          "prompt_signature": {
            "type": "boolean",
            "description": "Prompt for Signature will show the signature screen on compatible terminals.",
            "nullable": true
          },
          "key_card": {
            "type": "boolean",
            "description": "Prompt Key Card will allow you to manually enter the card details.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Terminals.TerminalRegisterRequestModel": {
        "required": [
          "nickname",
          "registrationCode"
        ],
        "type": "object",
        "properties": {
          "registration_code": {
            "minLength": 1,
            "type": "string",
            "description": "Registration code is listed on your powered up terminal.  This is a 6 character code."
          },
          "device_id": {
            "type": "string",
            "description": "Device identifier is on the back of your terminal.  This is an 8 character code. Required for Canadian processing.",
            "nullable": true
          },
          "nickname": {
            "maxLength": 20,
            "minLength": 1,
            "pattern": "^[0-9A-Za-z _-]*$",
            "type": "string",
            "description": "Terminal nickname will be displayed on the terminal, and in the console."
          },
          "configuration": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Terminals.TerminalRegisterRequestModelConfiguration"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Terminals.TerminalRegisterRequestModelConfiguration": {
        "type": "object",
        "properties": {
          "prompt_tip": {
            "type": "boolean",
            "description": "Prompt for Tip will display tip at time of sale options.  If your account does not support tip at time of sale this option will be ignored.",
            "nullable": true
          },
          "tip_amounts": {
            "type": "array",
            "items": {
              "type": "number",
              "format": "decimal"
            },
            "description": "Tip amounts in dollar format.  Terminals can support 3 or 4 tip amounts depending on the terminal.  Any extra items will be ignored.  This is required if you set Prompt for Tip to true.\r\n\r\nExample: [28.23, 33.88, 37.65, 41.41]",
            "nullable": true
          },
          "prompt_cvv": {
            "type": "boolean",
            "description": "Prompt for CVV/CVC will attempt to override the card verification requirement and force CVV/CVC input.",
            "nullable": true
          },
          "prompt_postal_code": {
            "type": "boolean",
            "description": "Prompt for Postal Code will allow the customer to enter their billing postal code.",
            "nullable": true
          },
          "prompt_amount_confirmation": {
            "type": "boolean",
            "description": "Prompt for Amount Confirmation will force the customer to approve the transaction amount.",
            "nullable": true
          },
          "prompt_signature": {
            "type": "boolean",
            "description": "Prompt for Signature will show the signature screen on compatible terminals.",
            "nullable": true
          },
          "key_card": {
            "type": "boolean",
            "description": "Prompt Key Card will allow you to manually enter the card details.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Tokens.TokenRequet": {
        "type": "object",
        "properties": {
          "credit_card": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.WebAPI.CreditCard"
          },
          "check": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Check"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.Address": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "line1": {
            "type": "string",
            "nullable": true
          },
          "line2": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "postal_code": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.Amount": {
        "required": [
          "value"
        ],
        "type": "object",
        "properties": {
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.WebAPI.Enums.CurrencyCode"
              }
            ],
            "nullable": true
          },
          "value": {
            "maximum": 999999999.99,
            "minimum": 0.01,
            "type": "number",
            "description": "Values is the full amount to be processed.  The value is inclusive of all tax, discounts, shipping, fees ect.\r\n\r\nExample: 127.55",
            "format": "decimal"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.AvsResponse": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Network address verification response code."
          },
          "text": {
            "type": "string",
            "description": "Text for the code returned."
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.CvvResponse": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Card verification value response from the network.\r\n\r\n*** Supported Values ***\r\n- `M` is Card Verification value matches\r\n- `N` is Card Verification value does not match\r\n- `P` is Not Processed\r\n- `S` is Service not supported\r\n- `U` is Issuer is not certified\r\n- `X` is Service is not available\r\n- `E` is Unrecognized or unknown response"
          },
          "text": {
            "type": "string",
            "description": "Text for the code returned."
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.INITIAL": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "description": "Initial Transaction type\r\n\r\n*** Supported Values ***\r\n- `[NULL]`\r\n- `RECURRING`\r\n- `INSTALLMENT`",
        "format": "int32",
        "x-enumNames": [
  "RECURRING",
  "INSTALLMENT"
]
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.INITIATED_BY": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "description": "*** Supported Values ***\r\n- `[NULL]`\r\n- `MERCHANT` recurring payments, installments, or other scenarios where the merchant start then transaction\r\n- `CUSTOMER` customer started the transaction",
        "format": "int32",
        "x-enumNames": [
  "MERCHANT",
  "CUSTOMER"
]
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.Line": {
        "type": "object",
        "properties": {
          "product_code": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "commodity_code": {
            "type": "string",
            "nullable": true
          },
          "unit_of_measure": {
            "type": "string"
          },
          "unit_cost": {
            "type": "number",
            "format": "decimal"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "number",
            "format": "decimal"
          },
          "tax": {
            "type": "number",
            "format": "decimal"
          },
          "tax_rate": {
            "type": "number",
            "format": "decimal"
          },
          "discount": {
            "type": "number",
            "format": "decimal"
          },
          "discount_rate": {
            "type": "number",
            "format": "decimal"
          },
          "tax_type": {
            "type": "string",
            "nullable": true
          },
          "alternate_tax_id": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.Order": {
        "type": "object",
        "properties": {
          "bill_to": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Address"
          },
          "ship_to": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Address"
          },
          "discount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "surcharge": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "shipping": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "tip": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "tax": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "total": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Line"
            },
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.Payment": {
        "type": "object",
        "properties": {
          "token": {
            "maxLength": 64,
            "minLength": 8,
            "pattern": "^[0-9A-Za-z-]*$",
            "type": "string",
            "description": "Token ID generated from the iframe or the tokens endpoint.\r\n\r\nExample: 00000000-0000-0000-0000-000000000000",
            "nullable": true
          },
          "stored": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Stored"
          },
          "terminal": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Terminals.PaymentTerminal"
          },
          "check": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Check"
          },
          "cash": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Payment requires that you submit only one of the below options:\r\n- `Token`\r\n- `Stored`\r\n- `Terminal`\r\n- `Check`\r\n- `Cash`",
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.Stored": {
        "type": "object",
        "properties": {
          "customer": {
            "maxLength": 64,
            "minLength": 8,
            "pattern": "^[0-9A-Za-z-]*$",
            "type": "string",
            "description": "Ecrypt Customer Identifier, this will use the customers default payment method on file.  This can be found under Customer Vault/Api User Id",
            "nullable": true
          },
          "wallet": {
            "maxLength": 64,
            "minLength": 8,
            "pattern": "^[0-9A-Za-z-]*$",
            "type": "string",
            "description": "Ecrypt Customer Wallet Identifier, this will use the specified payment method.",
            "nullable": true
          },
          "initiated_by": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.INITIATED_BY"
              }
            ],
            "nullable": true
          },
          "initial": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.INITIAL"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionAuthorizeRequest": {
        "required": [
          "amount",
          "payment"
        ],
        "type": "object",
        "properties": {
          "payment": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Payment"
          },
          "amount": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Amount"
          },
          "order": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Order"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionCaptureRequest": {
        "required": [
          "amount",
          "transactionId"
        ],
        "type": "object",
        "properties": {
          "transaction_id": {
            "minLength": 1,
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "transactionid\r\nOriginal payment gateway transaction id"
          },
          "amount": {
            "maximum": 999999999.99,
            "minimum": 0.01,
            "type": "number",
            "description": "amount\r\nTotal amount to be settled. This amount must be equal to or less than the original authorized amount.\r\nFormat: x.xx",
            "format": "decimal"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionCreditRequest": {
        "type": "object",
        "properties": {
          "payment": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Payment"
          },
          "amount": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Amount"
          },
          "order": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Order"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionRefundRequest": {
        "required": [
          "amount",
          "transactionId"
        ],
        "type": "object",
        "properties": {
          "transaction_id": {
            "minLength": 1,
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "Transaction Id to issue the refund against."
          },
          "amount": {
            "maximum": 999999999.99,
            "minimum": 0.01,
            "type": "number",
            "description": "Amount to refund.  Cannot exceed the original transaction amount.",
            "format": "decimal"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionResponse": {
        "required": [
          "requestId"
        ],
        "type": "object",
        "properties": {
          "transaction_id": {
            "type": "string",
            "description": "Ecrypt Transaction Identifier"
          },
          "auth_code": {
            "type": "string",
            "description": "Authorization Code is the underlying payment networks approval code. For credit card/terminal transactions this is a 6 character string."
          },
          "response_code": {
            "type": "string",
            "description": "*** Supported Values ***\r\n- `APPROVED` transaction was approved\r\n- `DECLINED` transaction was declined, review response text\r\n- `ERROR` error processing the transaction"
          },
          "response_text": {
            "type": "string",
            "description": "Text description of the network response."
          },
          "latency": {
            "type": "integer",
            "description": "Latency for request in milliseconds.",
            "format": "int32"
          },
          "avs": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.AvsResponse"
          },
          "cvv": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.CvvResponse"
          },
          "amount": {
            "type": "number",
            "description": "Amount transaction was attempted for.",
            "format": "decimal"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": { },
            "description": "Metadata for the transaction.\r\n*** Possible Fields ***\r\n- `credit_card_network` for credit card/terminal transactions only\r\n- `credit_card_number` for credit card/terminal transactions only, masked card number\r\n- `credit_card_expires` for credit card/terminal transactions only, expiry formatted as MMyy\r\n- `bank_name` for check/ach transactions only\r\n- `account_number` for check/ach transactions only\r\n- `routing_number` for check/ach transactions only\r\n- `order_tax` when supplied\r\n- `order_tip` when supplied",
            "nullable": true
          },
          "request_id": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Ecrypt Request Identifier.",
            "default": "ABCDEF000000000000010"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionSaleRequest": {
        "required": [
          "amount",
          "payment"
        ],
        "type": "object",
        "properties": {
          "payment": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Payment"
          },
          "amount": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Amount"
          },
          "order": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Order"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.TransactionVoidRequest": {
        "required": [
          "transactionId"
        ],
        "type": "object",
        "properties": {
          "transaction_id": {
            "minLength": 1,
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "Transaction Id to void"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.Transactions.Validate.TransactionValidateRequest": {
        "required": [
          "payment"
        ],
        "type": "object",
        "properties": {
          "payment": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.Transactions.Payment"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.WebAPI.ApplePayPaymentData": {
        "type": "object",
        "properties": {
          "data": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          },
          "header": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.WebAPI.ApplePayPaymentHeader"
          },
          "version": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.WebAPI.ApplePayPaymentHeader": {
        "type": "object",
        "properties": {
          "ephemeral_public_key": {
            "type": "string"
          },
          "public_key_hash": {
            "type": "string"
          },
          "transaction_id": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.WebAPI.ApplePayPaymentMethod": {
        "type": "object",
        "properties": {
          "display_name": {
            "type": "string"
          },
          "network": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.WebAPI.ApplePayPaymentRequest": {
        "type": "object",
        "properties": {
          "payment_data": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.WebAPI.ApplePayPaymentData"
          },
          "payment_method": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.WebAPI.ApplePayPaymentMethod"
          },
          "transaction_identifier": {
            "type": "string"
          },
          "name_on_card": {
            "type": "string"
          },
          "postal_code": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.WebAPI.CreditCard": {
        "required": [
          "accountNumber",
          "expires"
        ],
        "type": "object",
        "properties": {
          "name_on_card": {
            "pattern": "^[0-9A-Za-z `',;-]*$",
            "type": "string",
            "description": "Name as it appears on the credit card.",
            "default": "John Doe",
            "nullable": true
          },
          "account_number": {
            "maxLength": 20,
            "minLength": 13,
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "Credit Card primary account number(PAN)",
            "default": "4111111111111111"
          },
          "expires": {
            "maxLength": 7,
            "minLength": 4,
            "pattern": "^[0-9 /]*$",
            "type": "string",
            "description": "Credit Card Expiry\r\n\r\nFormat: MMYY\r\nExample: 0135 = January 2035",
            "default": "0135"
          },
          "verification_value": {
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "3 or 4 digit card verification value(CVV, CVC).",
            "default": "000",
            "nullable": true
          },
          "postal_code": {
            "pattern": "^[0-9A-Za-z -]*$",
            "type": "string",
            "description": "Billing address postal code.",
            "default": "90210",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.WebAPI.Enums.AccountType": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "description": "Type of account\r\n\r\nExample: CHECKING\r\n*** Supported Values ***\r\n- `CHECKING`\r\n- `SAVINGS`",
        "format": "int32",
        "x-enumNames": [
  "Checking",
  "Savings"
]
      },
      "Ecrypt.Gateway.Api.Core.Model.WebAPI.Enums.CurrencyCode": {
        "enum": [
          8,
          12,
          32,
          36,
          44,
          48,
          50,
          51,
          52,
          60,
          64,
          68,
          72,
          84,
          90,
          96,
          104,
          108,
          116,
          124,
          132,
          136,
          144,
          152,
          156,
          170,
          174,
          188,
          192,
          203,
          208,
          214,
          222,
          230,
          232,
          238,
          242,
          262,
          270,
          292,
          320,
          324,
          328,
          332,
          340,
          344,
          348,
          352,
          356,
          360,
          364,
          368,
          376,
          388,
          392,
          398,
          400,
          404,
          408,
          410,
          414,
          417,
          418,
          422,
          426,
          430,
          434,
          446,
          454,
          458,
          462,
          480,
          484,
          496,
          498,
          504,
          512,
          516,
          524,
          532,
          533,
          548,
          554,
          558,
          566,
          578,
          586,
          590,
          598,
          600,
          604,
          608,
          634,
          643,
          646,
          654,
          682,
          690,
          702,
          704,
          706,
          710,
          728,
          748,
          752,
          756,
          760,
          764,
          776,
          780,
          784,
          788,
          800,
          807,
          818,
          826,
          834,
          840,
          858,
          860,
          882,
          886,
          901,
          925,
          926,
          929,
          930,
          931,
          932,
          933,
          934,
          936,
          937,
          938,
          940,
          941,
          943,
          944,
          946,
          947,
          948,
          949,
          950,
          951,
          952,
          953,
          960,
          965,
          967,
          968,
          969,
          970,
          971,
          972,
          973,
          975,
          976,
          977,
          978,
          979,
          980,
          981,
          984,
          985,
          986,
          990,
          994,
          997
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
  "ALL",
  "DZD",
  "ARS",
  "AUD",
  "BSD",
  "BHD",
  "BDT",
  "AMD",
  "BBD",
  "BMD",
  "BTN",
  "BOB",
  "BWP",
  "BZD",
  "SBD",
  "BND",
  "MMK",
  "BIF",
  "KHR",
  "CAD",
  "CVE",
  "KYD",
  "LKR",
  "CLP",
  "CNY",
  "COP",
  "KMF",
  "CRC",
  "CUP",
  "CZK",
  "DKK",
  "DOP",
  "SVC",
  "ETB",
  "ERN",
  "FKP",
  "FJD",
  "DJF",
  "GMD",
  "GIP",
  "GTQ",
  "GNF",
  "GYD",
  "HTG",
  "HNL",
  "HKD",
  "HUF",
  "ISK",
  "INR",
  "IDR",
  "IRR",
  "IQD",
  "ILS",
  "JMD",
  "JPY",
  "KZT",
  "JOD",
  "KES",
  "KPW",
  "KRW",
  "KWD",
  "KGS",
  "LAK",
  "LBP",
  "LSL",
  "LRD",
  "LYD",
  "MOP",
  "MWK",
  "MYR",
  "MVR",
  "MUR",
  "MXN",
  "MNT",
  "MDL",
  "MAD",
  "OMR",
  "NAD",
  "NPR",
  "ANG",
  "AWG",
  "VUV",
  "NZD",
  "NIO",
  "NGN",
  "NOK",
  "PKR",
  "PAB",
  "PGK",
  "PYG",
  "PEN",
  "PHP",
  "QAR",
  "RUB",
  "RWF",
  "SHP",
  "SAR",
  "SCR",
  "SGD",
  "VND",
  "SOS",
  "ZAR",
  "SSP",
  "SZL",
  "SEK",
  "CHF",
  "SYP",
  "THB",
  "TOP",
  "TTD",
  "AED",
  "TND",
  "UGX",
  "MKD",
  "EGP",
  "GBP",
  "TZS",
  "USD",
  "UYU",
  "UZS",
  "WST",
  "YER",
  "TWD",
  "SLE",
  "VED",
  "MRU",
  "STN",
  "CUC",
  "ZWL",
  "BYN",
  "TMT",
  "GHS",
  "VEF",
  "SDG",
  "UYI",
  "RSD",
  "MZN",
  "AZN",
  "RON",
  "CHE",
  "CHW",
  "TRY",
  "XAF",
  "XCD",
  "XOF",
  "XPF",
  "XDR",
  "XUA",
  "ZMW",
  "SRD",
  "MGA",
  "COU",
  "AFN",
  "TJS",
  "AOA",
  "BGN",
  "CDF",
  "BAM",
  "EUR",
  "MXV",
  "UAH",
  "GEL",
  "BOV",
  "PLN",
  "BRL",
  "CLF",
  "XSU",
  "USN"
]
      },
      "Ecrypt.Gateway.Api.Core.Model.WebAPI.Enums.SubscriptionCycleType": {
        "enum": [
          10,
          20,
          30,
          50,
          52,
          70,
          71,
          73,
          79,
          90,
          95
        ],
        "type": "integer",
        "description": "\r\nSubscription cycle intervals\r\n\r\nDAILY = 10 Cycle runs everyday</br>\r\n\r\nWEEKLY = 20 Run the same day every week</br>\r\n\r\nBI_WEEKLY = 30 Run on Monday and Wednesday in the Merchant Timezone</br>\r\n\r\nSEMI_MONTHLY_FIRST_AND_FIFTEENTH = 50 Run Every 1st and 15th</br>\r\n\r\nSEMI_MONTHLY_FIFTEENTH_AND_LAST = 52 Run Every 15th and Last Day of the month</br>\r\n\r\nMONTHLY = 70 Run the same day every month</br>\r\n\r\nMONTHLY_FIRST = 71 Run on the first of the month</br>\r\n\r\nMONTHLY_LAST = 79 Run on the last day of the month</br>\r\n\r\nQUARTERLY = 73 Run the same day of month every 3 months, use Monthly logic for validation</br>\r\n\r\nSEMI_ANNUALLY = 90 Run every 6 months</br>\r\n\r\nANNUALLY = 95 Run the same day of the year, use Monthly logic for validation</br>",
        "format": "int32",
        "x-enumNames": [
  "Daily",
  "Weekly",
  "BiWeekly",
  "SemiMonthlyFirstAndFifteenth",
  "SemiMonthlyFifteenthAndLast",
  "Monthly",
  "MonthlyFirst",
  "Quarterly",
  "MonthlyLast",
  "SemiAnnually",
  "Annually"
]
      },
      "Ecrypt.Gateway.Api.Core.Model.WebAPI.GooglePaymentRequest": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string"
          },
          "intermediate_signing_key": {
            "$ref": "#/components/schemas/Ecrypt.Gateway.Api.Core.Model.WebAPI.IntermediateSigningKey"
          },
          "protocol_version": {
            "type": "string"
          },
          "signed_message": {
            "type": "string"
          },
          "postal_code": {
            "type": "string"
          },
          "name_on_card": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Ecrypt.Gateway.Api.Core.Model.WebAPI.IntermediateSigningKey": {
        "type": "object",
        "properties": {
          "signed_key": {
            "type": "string"
          },
          "signatures": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "nullable": true
      },
      "Microsoft.AspNetCore.Mvc.IActionResult": {
        "type": "object",
        "additionalProperties": false,
        "nullable": true
      },
      "Microsoft.AspNetCore.Mvc.ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { },
        "nullable": true
      }
    },
    "securitySchemes": {
      "X-Api-Key": {
        "type": "apiKey",
        "description": "Use this",
        "name": "X-Api-Key",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "X-Api-Key": [ ]
    }
  ],
  "tags": [
    {
      "name": "Customers"
    },
    {
      "name": "Customers Subscription"
    },
    {
      "name": "Customers Wallet"
    },
    {
      "name": "Dynamic Checkout"
    },
    {
      "name": "Subscriptions"
    },
    {
      "name": "Terminals"
    },
    {
      "name": "Tokens"
    },
    {
      "name": "Transactions"
    }
  ]
}