{ "openapi": "3.1.0", "info": { "title": "Paymenter", "version": "1.0.0", "description": "API documentation for Paymenter
Requires Paymenter v1.2.0 or higher." }, "servers": [ { "url": "http://localhost/api" } ], "tags": [ { "name": "Affiliates" }, { "name": "Categories" }, { "name": "Users" }, { "name": "Products" }, { "name": "Orders" }, { "name": "Services" }, { "name": "Credits" }, { "name": "Invoices" }, { "name": "InvoiceItems" }, { "name": "Tickets" }, { "name": "Ticket Messages" } ], "security": [ { "http": [] } ], "paths": { "/v1/admin/affiliates": { "get": { "operationId": "affiliates.index", "summary": "List Affiliates", "tags": [ "Affiliates" ], "parameters": [ { "name": "sort", "in": "query", "description": "Available sorts are `id`, `code`, `visitors`, `reward`, `discount`, `created_at`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-id`.", "schema": { "type": "string" } }, { "name": "include", "in": "query", "description": "Available includes are `user`, `userCount`, `userExists`, `orders`, `ordersCount`, `ordersExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "description": "How many items to show per page.", "schema": { "type": "integer", "default": 15 }, "example": 20 }, { "name": "page", "in": "query", "description": "Which page to show.", "schema": { "type": "integer" }, "example": 2 }, { "name": "filter[affiliate_id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[code]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[visitors]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[reward]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[discount]", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the affiliates as a JSON response\n\n\n\nPaginated set of `AffiliateResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/AffiliateResource" } }, "links": { "type": "object", "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "prev": { "type": "string" }, "next": { "type": "string" } } }, "meta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "from": { "type": [ "integer", "null" ] }, "path": { "type": [ "string", "null" ], "description": "Base path for paginator generated URLs." }, "per_page": { "type": "integer", "description": "Number of items shown per page." }, "to": { "type": [ "integer", "null" ], "description": "Number of the last item in the slice." } }, "required": [ "current_page", "from", "path", "per_page", "to" ] }, "included": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/UserResource" }, { "$ref": "#/components/schemas/AffiliateOrderResource" } ] } } }, "required": [ "data", "links", "meta" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "post": { "operationId": "affiliates.store", "summary": "Create a new affiliate", "tags": [ "Affiliates" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateAffiliateRequest" } } } }, "responses": { "200": { "description": "Return the created affiliate as a JSON response\n\n\n\n`AffiliateResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/AffiliateResource" } }, "required": [ "data" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/affiliates/{affiliate}": { "get": { "operationId": "affiliates.show", "summary": "Show a specific affiliate", "tags": [ "Affiliates" ], "parameters": [ { "name": "affiliate", "in": "path", "required": true, "description": "The affiliate ID", "schema": { "type": "integer" } }, { "name": "include", "in": "query", "description": "Available includes are `user`, `userCount`, `userExists`, `orders`, `ordersCount`, `ordersExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the affiliate as a JSON response\n\n\n\n`AffiliateResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/AffiliateResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "put": { "operationId": "affiliates.update", "summary": "Update a specific affiliate", "tags": [ "Affiliates" ], "parameters": [ { "name": "affiliate", "in": "path", "required": true, "description": "The affiliate ID", "schema": { "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAffiliateRequest" } } } }, "responses": { "200": { "description": "Return the updated affiliate as a JSON response\n\n\n\n`AffiliateResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/AffiliateResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "delete": { "operationId": "affiliates.destroy", "summary": "Delete a specific affiliate", "tags": [ "Affiliates" ], "parameters": [ { "name": "affiliate", "in": "path", "required": true, "description": "The affiliate ID", "schema": { "type": "integer" } } ], "responses": { "204": { "description": "No content" }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/categories": { "get": { "operationId": "v1.admin.categories.index", "summary": "List Categories", "tags": [ "Categories" ], "parameters": [ { "name": "sort", "in": "query", "description": "Available sorts are `id`, `created_at`, `updated_at`, `name`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-id`.", "schema": { "type": "string" } }, { "name": "include", "in": "query", "description": "Available includes are `products`, `productsCount`, `productsExists`, `parent`, `parentCount`, `parentExists`, `children`, `childrenCount`, `childrenExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "description": "How many items to show per page.", "schema": { "type": "integer", "default": 15 }, "example": 20 }, { "name": "page", "in": "query", "description": "Which page to show.", "schema": { "type": "integer" }, "example": 2 }, { "name": "filter[name]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[parent_id]", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the categories as a JSON response\n\n\n\nPaginated set of `CategoryResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/CategoryResource" } }, "links": { "type": "object", "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "prev": { "type": "string" }, "next": { "type": "string" } } }, "meta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "from": { "type": [ "integer", "null" ] }, "path": { "type": [ "string", "null" ], "description": "Base path for paginator generated URLs." }, "per_page": { "type": "integer", "description": "Number of items shown per page." }, "to": { "type": [ "integer", "null" ], "description": "Number of the last item in the slice." } }, "required": [ "current_page", "from", "path", "per_page", "to" ] }, "included": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/ProductResource" }, { "$ref": "#/components/schemas/CategoryResource" } ] } } }, "required": [ "data", "links", "meta" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/categories/{category}": { "get": { "operationId": "v1.admin.categories.show", "summary": "Show a specific category", "tags": [ "Categories" ], "parameters": [ { "name": "category", "in": "path", "required": true, "description": "The category ID", "schema": { "type": "integer" } }, { "name": "include", "in": "query", "description": "Available includes are `products`, `productsCount`, `productsExists`, `parent`, `parentCount`, `parentExists`, `children`, `childrenCount`, `childrenExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the category as a JSON response\n\n\n\n`CategoryResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CategoryResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/users": { "get": { "operationId": "v1.admin.users.index", "summary": "List Users", "tags": [ "Users" ], "parameters": [ { "name": "sort", "in": "query", "description": "Available sorts are `id`, `first_name`, `last_name`, `email`, `created_at`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-id`.", "schema": { "type": "string" } }, { "name": "include", "in": "query", "description": "Available includes are `properties`, `propertiesCount`, `propertiesExists`, `orders`, `ordersCount`, `ordersExists`, `services`, `servicesCount`, `servicesExists`, `invoices`, `invoicesCount`, `invoicesExists`, `tickets`, `ticketsCount`, `ticketsExists`, `credits`, `creditsCount`, `creditsExists`, `role`, `roleCount`, `roleExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "description": "How many items to show per page.", "schema": { "type": "integer", "default": 15 }, "example": 20 }, { "name": "page", "in": "query", "description": "Which page to show.", "schema": { "type": "integer" }, "example": 2 }, { "name": "filter[first_name]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[last_name]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[email]", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the users as a JSON response\n\n\n\nPaginated set of `UserResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/UserResource" } }, "links": { "type": "object", "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "prev": { "type": "string" }, "next": { "type": "string" } } }, "meta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "from": { "type": [ "integer", "null" ] }, "path": { "type": [ "string", "null" ], "description": "Base path for paginator generated URLs." }, "per_page": { "type": "integer", "description": "Number of items shown per page." }, "to": { "type": [ "integer", "null" ], "description": "Number of the last item in the slice." } }, "required": [ "current_page", "from", "path", "per_page", "to" ] }, "included": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/PropertyResource" }, { "$ref": "#/components/schemas/OrderResource" }, { "$ref": "#/components/schemas/ServiceResource" }, { "$ref": "#/components/schemas/InvoiceResource" }, { "$ref": "#/components/schemas/TicketResource" }, { "$ref": "#/components/schemas/CreditResource" }, { "$ref": "#/components/schemas/RoleResource" } ] } } }, "required": [ "data", "links", "meta" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "post": { "operationId": "v1.admin.users.store", "summary": "Create a new user", "tags": [ "Users" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateUserRequest" } } } }, "responses": { "200": { "description": "Return the created user as a JSON response\n\n\n\n`UserResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/UserResource" } }, "required": [ "data" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/users/{user}": { "get": { "operationId": "v1.admin.users.show", "summary": "Show a specific user", "tags": [ "Users" ], "parameters": [ { "name": "user", "in": "path", "required": true, "description": "The user ID", "schema": { "type": "integer" } }, { "name": "include", "in": "query", "description": "Available includes are `properties`, `propertiesCount`, `propertiesExists`, `orders`, `ordersCount`, `ordersExists`, `services`, `servicesCount`, `servicesExists`, `invoices`, `invoicesCount`, `invoicesExists`, `tickets`, `ticketsCount`, `ticketsExists`, `credits`, `creditsCount`, `creditsExists`, `role`, `roleCount`, `roleExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the user as a JSON response\n\n\n\n`UserResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/UserResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "put": { "operationId": "v1.admin.users.update", "summary": "Update a specific user", "tags": [ "Users" ], "parameters": [ { "name": "user", "in": "path", "required": true, "description": "The user ID", "schema": { "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUserRequest" } } } }, "responses": { "200": { "description": "Return the updated user as a JSON response\n\n\n\n`UserResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/UserResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "delete": { "operationId": "v1.admin.users.destroy", "summary": "Delete a specific user", "tags": [ "Users" ], "parameters": [ { "name": "user", "in": "path", "required": true, "description": "The user ID", "schema": { "type": "integer" } } ], "responses": { "204": { "description": "No content" }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/orders": { "get": { "operationId": "v1.admin.orders.index", "summary": "List Orders", "tags": [ "Orders" ], "parameters": [ { "name": "sort", "in": "query", "description": "Available sorts are `id`, `created_at`, `updated_at`, `currency_code`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-id`.", "schema": { "type": "string" } }, { "name": "include", "in": "query", "description": "Available includes are `services`, `servicesCount`, `servicesExists`, `user`, `userCount`, `userExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "description": "How many items to show per page.", "schema": { "type": "integer", "default": 15 }, "example": 20 }, { "name": "page", "in": "query", "description": "Which page to show.", "schema": { "type": "integer" }, "example": 2 }, { "name": "filter[id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[currency_code]", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the orders as a JSON response\n\n\n\nPaginated set of `OrderResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/OrderResource" } }, "links": { "type": "object", "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "prev": { "type": "string" }, "next": { "type": "string" } } }, "meta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "from": { "type": [ "integer", "null" ] }, "path": { "type": [ "string", "null" ], "description": "Base path for paginator generated URLs." }, "per_page": { "type": "integer", "description": "Number of items shown per page." }, "to": { "type": [ "integer", "null" ], "description": "Number of the last item in the slice." } }, "required": [ "current_page", "from", "path", "per_page", "to" ] }, "included": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/ServiceResource" }, { "$ref": "#/components/schemas/UserResource" } ] } } }, "required": [ "data", "links", "meta" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "post": { "operationId": "v1.admin.orders.store", "summary": "Create a new order", "tags": [ "Orders" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrderRequest" } } } }, "responses": { "200": { "description": "Return the created order as a JSON response\n\n\n\n`OrderResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/OrderResource" } }, "required": [ "data" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/orders/{order}": { "get": { "operationId": "v1.admin.orders.show", "summary": "Show a specific order", "tags": [ "Orders" ], "parameters": [ { "name": "order", "in": "path", "required": true, "description": "The order ID", "schema": { "type": "integer" } }, { "name": "include", "in": "query", "description": "Available includes are `services`, `servicesCount`, `servicesExists`, `user`, `userCount`, `userExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the order as a JSON response\n\n\n\n`OrderResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/OrderResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "put": { "operationId": "v1.admin.orders.update", "summary": "Update a specific order", "tags": [ "Orders" ], "parameters": [ { "name": "order", "in": "path", "required": true, "description": "The order ID", "schema": { "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateOrderRequest" } } } }, "responses": { "200": { "description": "Return the updated order as a JSON response\n\n\n\n`OrderResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/OrderResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "delete": { "operationId": "v1.admin.orders.destroy", "summary": "Delete a specific order", "tags": [ "Orders" ], "parameters": [ { "name": "order", "in": "path", "required": true, "description": "The order ID", "schema": { "type": "integer" } } ], "responses": { "204": { "description": "No content" }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/products": { "get": { "operationId": "v1.admin.products.index", "summary": "List Products", "tags": [ "Products" ], "parameters": [ { "name": "sort", "in": "query", "description": "Available sorts are `id`, `created_at`, `updated_at`, `name`, `sort`, `stock`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-id`.", "schema": { "type": "string" } }, { "name": "include", "in": "query", "description": "Available includes are `category`, `categoryCount`, `categoryExists`, `plans.prices`, `plans.pricesCount`, `plans.pricesExists`, `services`, `servicesCount`, `servicesExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "description": "How many items to show per page.", "schema": { "type": "integer", "default": 15 }, "example": 20 }, { "name": "page", "in": "query", "description": "Which page to show.", "schema": { "type": "integer" }, "example": 2 }, { "name": "filter[name]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[category_id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[server_id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[hidden]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[allow_quantity]", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the products as a JSON response\n\n\n\nPaginated set of `ProductResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/ProductResource" } }, "links": { "type": "object", "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "prev": { "type": "string" }, "next": { "type": "string" } } }, "meta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "from": { "type": [ "integer", "null" ] }, "path": { "type": [ "string", "null" ], "description": "Base path for paginator generated URLs." }, "per_page": { "type": "integer", "description": "Number of items shown per page." }, "to": { "type": [ "integer", "null" ], "description": "Number of the last item in the slice." } }, "required": [ "current_page", "from", "path", "per_page", "to" ] }, "included": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/CategoryResource" }, { "$ref": "#/components/schemas/PlanResource" } ] } } }, "required": [ "data", "links", "meta" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/products/{product}": { "get": { "operationId": "v1.admin.products.show", "summary": "Show a specific product", "tags": [ "Products" ], "parameters": [ { "name": "product", "in": "path", "required": true, "description": "The product ID", "schema": { "type": "integer" } }, { "name": "include", "in": "query", "description": "Available includes are `category`, `categoryCount`, `categoryExists`, `plans.prices`, `plans.pricesCount`, `plans.pricesExists`, `services`, `servicesCount`, `servicesExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the product as a JSON response\n\n\n\n`ProductResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ProductResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/services": { "get": { "operationId": "v1.admin.services.index", "summary": "List Services", "tags": [ "Services" ], "parameters": [ { "name": "sort", "in": "query", "description": "Available sorts are `id`, `created_at`, `updated_at`, `expires_at`, `status`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-id`.", "schema": { "type": "string" } }, { "name": "include", "in": "query", "description": "Available includes are `order`, `orderCount`, `orderExists`, `coupon`, `couponCount`, `couponExists`, `user`, `userCount`, `userExists`, `product`, `productCount`, `productExists`, `invoices`, `invoicesCount`, `invoicesExists`, `properties`, `propertiesCount`, `propertiesExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "description": "How many items to show per page.", "schema": { "type": "integer", "default": 15 }, "example": 20 }, { "name": "page", "in": "query", "description": "Which page to show.", "schema": { "type": "integer" }, "example": 2 }, { "name": "filter[quantity]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[price]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[expires_at]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[subscription_id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[status]", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the services as a JSON response\n\n\n\nPaginated set of `ServiceResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResource" } }, "links": { "type": "object", "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "prev": { "type": "string" }, "next": { "type": "string" } } }, "meta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "from": { "type": [ "integer", "null" ] }, "path": { "type": [ "string", "null" ], "description": "Base path for paginator generated URLs." }, "per_page": { "type": "integer", "description": "Number of items shown per page." }, "to": { "type": [ "integer", "null" ], "description": "Number of the last item in the slice." } }, "required": [ "current_page", "from", "path", "per_page", "to" ] }, "included": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/CouponResource" }, { "$ref": "#/components/schemas/UserResource" }, { "$ref": "#/components/schemas/OrderResource" }, { "$ref": "#/components/schemas/ProductResource" }, { "$ref": "#/components/schemas/InvoiceResource" }, { "$ref": "#/components/schemas/PropertyResource" } ] } } }, "required": [ "data", "links", "meta" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "post": { "operationId": "v1.admin.services.store", "summary": "Create a new service", "tags": [ "Services" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateServiceRequest" } } } }, "responses": { "200": { "description": "Return the created service as a JSON response\n\n\n\n`ServiceResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ServiceResource" } }, "required": [ "data" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/services/{service}": { "get": { "operationId": "v1.admin.services.show", "summary": "Show a specific service", "tags": [ "Services" ], "parameters": [ { "name": "service", "in": "path", "required": true, "description": "The service ID", "schema": { "type": "integer" } }, { "name": "include", "in": "query", "description": "Available includes are `order`, `orderCount`, `orderExists`, `coupon`, `couponCount`, `couponExists`, `user`, `userCount`, `userExists`, `product`, `productCount`, `productExists`, `invoices`, `invoicesCount`, `invoicesExists`, `properties`, `propertiesCount`, `propertiesExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the service as a JSON response\n\n\n\n`ServiceResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ServiceResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "put": { "operationId": "v1.admin.services.update", "summary": "Update a specific service", "tags": [ "Services" ], "parameters": [ { "name": "service", "in": "path", "required": true, "description": "The service ID", "schema": { "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateServiceRequest" } } } }, "responses": { "200": { "description": "Return the updated service as a JSON response\n\n\n\n`ServiceResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ServiceResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "delete": { "operationId": "v1.admin.services.destroy", "summary": "Delete a specific service", "tags": [ "Services" ], "parameters": [ { "name": "service", "in": "path", "required": true, "description": "The service ID", "schema": { "type": "integer" } } ], "responses": { "204": { "description": "No content" }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/credits": { "get": { "operationId": "v1.admin.credits.index", "summary": "List Credits", "tags": [ "Credits" ], "parameters": [ { "name": "sort", "in": "query", "description": "Available sorts are `id`, `created_at`, `updated_at`, `currency_code`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-id`.", "schema": { "type": "string" } }, { "name": "include", "in": "query", "description": "Available includes are `user`, `userCount`, `userExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "description": "How many items to show per page.", "schema": { "type": "integer", "default": 15 }, "example": 20 }, { "name": "page", "in": "query", "description": "Which page to show.", "schema": { "type": "integer" }, "example": 2 }, { "name": "filter[id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[currency_code]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[user_id]", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the credits as a JSON response\n\n\n\nPaginated set of `CreditResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/CreditResource" } }, "links": { "type": "object", "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "prev": { "type": "string" }, "next": { "type": "string" } } }, "meta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "from": { "type": [ "integer", "null" ] }, "path": { "type": [ "string", "null" ], "description": "Base path for paginator generated URLs." }, "per_page": { "type": "integer", "description": "Number of items shown per page." }, "to": { "type": [ "integer", "null" ], "description": "Number of the last item in the slice." } }, "required": [ "current_page", "from", "path", "per_page", "to" ] }, "included": { "type": "array", "items": { "$ref": "#/components/schemas/UserResource" } } }, "required": [ "data", "links", "meta" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "post": { "operationId": "v1.admin.credits.store", "summary": "Create a new credit", "tags": [ "Credits" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCreditRequest" } } } }, "responses": { "200": { "description": "Return the created credit as a JSON response\n\n\n\n`CreditResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CreditResource" } }, "required": [ "data" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/credits/{credit}": { "get": { "operationId": "v1.admin.credits.show", "summary": "Show a specific credit", "tags": [ "Credits" ], "parameters": [ { "name": "credit", "in": "path", "required": true, "description": "The credit ID", "schema": { "type": "integer" } }, { "name": "include", "in": "query", "description": "Available includes are `user`, `userCount`, `userExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the credit as a JSON response\n\n\n\n`CreditResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CreditResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "put": { "operationId": "v1.admin.credits.update", "summary": "Update a specific credit", "tags": [ "Credits" ], "parameters": [ { "name": "credit", "in": "path", "required": true, "description": "The credit ID", "schema": { "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateCreditRequest" } } } }, "responses": { "200": { "description": "Return the updated credit as a JSON response\n\n\n\n`CreditResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CreditResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "delete": { "operationId": "v1.admin.credits.destroy", "summary": "Delete a specific credit", "tags": [ "Credits" ], "parameters": [ { "name": "credit", "in": "path", "required": true, "description": "The credit ID", "schema": { "type": "integer" } } ], "responses": { "204": { "description": "No content" }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/invoices": { "get": { "operationId": "v1.admin.invoices.index", "summary": "List Invoices", "tags": [ "Invoices" ], "parameters": [ { "name": "sort", "in": "query", "description": "Available sorts are `id`, `created_at`, `updated_at`, `currency_code`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-id`.", "schema": { "type": "string" } }, { "name": "include", "in": "query", "description": "Available includes are `items`, `itemsCount`, `itemsExists`, `user`, `userCount`, `userExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "description": "How many items to show per page.", "schema": { "type": "integer", "default": 15 }, "example": 20 }, { "name": "page", "in": "query", "description": "Which page to show.", "schema": { "type": "integer" }, "example": 2 }, { "name": "filter[id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[currency_code]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[user_id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[status]", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the invoices as a JSON response\n\n\n\nPaginated set of `InvoiceResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceResource" } }, "links": { "type": "object", "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "prev": { "type": "string" }, "next": { "type": "string" } } }, "meta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "from": { "type": [ "integer", "null" ] }, "path": { "type": [ "string", "null" ], "description": "Base path for paginator generated URLs." }, "per_page": { "type": "integer", "description": "Number of items shown per page." }, "to": { "type": [ "integer", "null" ], "description": "Number of the last item in the slice." } }, "required": [ "current_page", "from", "path", "per_page", "to" ] }, "included": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/UserResource" }, { "$ref": "#/components/schemas/InvoiceItemResource" } ] } } }, "required": [ "data", "links", "meta" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "post": { "operationId": "v1.admin.invoices.store", "summary": "Create a new invoice", "tags": [ "Invoices" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInvoiceRequest" } } } }, "responses": { "200": { "description": "Return the created invoice as a JSON response\n\n\n\n`InvoiceResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InvoiceResource" } }, "required": [ "data" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/invoices/{invoice}": { "get": { "operationId": "v1.admin.invoices.show", "summary": "Show a specific invoice", "tags": [ "Invoices" ], "parameters": [ { "name": "invoice", "in": "path", "required": true, "description": "The invoice ID", "schema": { "type": "integer" } }, { "name": "include", "in": "query", "description": "Available includes are `items`, `itemsCount`, `itemsExists`, `user`, `userCount`, `userExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the invoice as a JSON response\n\n\n\n`InvoiceResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InvoiceResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "put": { "operationId": "v1.admin.invoices.update", "summary": "Update a specific invoice", "tags": [ "Invoices" ], "parameters": [ { "name": "invoice", "in": "path", "required": true, "description": "The invoice ID", "schema": { "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateInvoiceRequest" } } } }, "responses": { "200": { "description": "Return the updated invoice as a JSON response\n\n\n\n`InvoiceResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InvoiceResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "delete": { "operationId": "v1.admin.invoices.destroy", "summary": "Delete a specific invoice", "tags": [ "Invoices" ], "parameters": [ { "name": "invoice", "in": "path", "required": true, "description": "The invoice ID", "schema": { "type": "integer" } } ], "responses": { "204": { "description": "No content" }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/invoice-items": { "get": { "operationId": "v1.admin.invoice-items.index", "summary": "List invoice items", "tags": [ "InvoiceItems" ], "parameters": [ { "name": "sort", "in": "query", "description": "Available sorts are `id`, `created_at`, `updated_at`, `quantity`, `price`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-id`.", "schema": { "type": "string" } }, { "name": "include", "in": "query", "description": "Available includes are `gateway`, `gatewayCount`, `gatewayExists`, `reference`, `referenceCount`, `referenceExists`, `invoice`, `invoiceCount`, `invoiceExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "description": "How many items to show per page.", "schema": { "type": "integer", "default": 15 }, "example": 20 }, { "name": "page", "in": "query", "description": "Which page to show.", "schema": { "type": "integer" }, "example": 2 }, { "name": "filter[id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[quantity]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[price]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[reference_type]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[reference_id]", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the invoices as a JSON response\n\n\n\nPaginated set of `InvoiceItemResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceItemResource" } }, "links": { "type": "object", "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "prev": { "type": "string" }, "next": { "type": "string" } } }, "meta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "from": { "type": [ "integer", "null" ] }, "path": { "type": [ "string", "null" ], "description": "Base path for paginator generated URLs." }, "per_page": { "type": "integer", "description": "Number of items shown per page." }, "to": { "type": [ "integer", "null" ], "description": "Number of the last item in the slice." } }, "required": [ "current_page", "from", "path", "per_page", "to" ] }, "included": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/ServiceResource" }, { "$ref": "#/components/schemas/CouponResource" }, { "$ref": "#/components/schemas/UserResource" }, { "$ref": "#/components/schemas/OrderResource" }, { "$ref": "#/components/schemas/ProductResource" }, { "$ref": "#/components/schemas/InvoiceResource" }, { "$ref": "#/components/schemas/PropertyResource" }, { "$ref": "#/components/schemas/ServiceUpgradeResource" }, { "$ref": "#/components/schemas/CreditResource" }, { "$ref": "#/components/schemas/InvoiceItemResource" } ] } } }, "required": [ "data", "links", "meta" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "post": { "operationId": "v1.admin.invoice-items.store", "summary": "Create a new invoice item", "tags": [ "InvoiceItems" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInvoiceItemRequest" } } } }, "responses": { "200": { "description": "Return the created invoice as a JSON response\n\n\n\n`InvoiceItemResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InvoiceItemResource" } }, "required": [ "data" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/invoice-items/{invoiceItem}": { "get": { "operationId": "v1.admin.invoice-items.show", "summary": "Show a specific invoice item", "tags": [ "InvoiceItems" ], "parameters": [ { "name": "invoiceItem", "in": "path", "required": true, "description": "The invoice item ID", "schema": { "type": "integer" } }, { "name": "include", "in": "query", "description": "Available includes are `gateway`, `gatewayCount`, `gatewayExists`, `reference`, `referenceCount`, `referenceExists`, `invoice`, `invoiceCount`, `invoiceExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the invoice item as a JSON response\n\n\n\n`InvoiceItemResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InvoiceItemResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "put": { "operationId": "v1.admin.invoice-items.update", "summary": "Update a specific invoice item", "tags": [ "InvoiceItems" ], "parameters": [ { "name": "invoiceItem", "in": "path", "required": true, "description": "The invoice item ID", "schema": { "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateInvoiceItemRequest" } } } }, "responses": { "200": { "description": "Return the updated invoice item as a JSON response\n\n\n\n`InvoiceItemResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InvoiceItemResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "delete": { "operationId": "v1.admin.invoice-items.destroy", "summary": "Delete a specific invoice item", "tags": [ "InvoiceItems" ], "parameters": [ { "name": "invoiceItem", "in": "path", "required": true, "description": "The invoice item ID", "schema": { "type": "integer" } } ], "responses": { "204": { "description": "No content" }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/tickets": { "get": { "operationId": "v1.admin.tickets.index", "summary": "List Tickets", "tags": [ "Tickets" ], "parameters": [ { "name": "sort", "in": "query", "description": "Available sorts are `id`, `created_at`, `updated_at`, `currency_code`, `status`, `priority`, `department`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-id`.", "schema": { "type": "string" } }, { "name": "include", "in": "query", "description": "Available includes are `messages`, `messagesCount`, `messagesExists`, `user`, `userCount`, `userExists`, `assigned_to`, `assigned_toCount`, `assigned_toExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "description": "How many items to show per page.", "schema": { "type": "integer", "default": 15 }, "example": 20 }, { "name": "page", "in": "query", "description": "Which page to show.", "schema": { "type": "integer" }, "example": 2 }, { "name": "filter[id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[currency_code]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[user_id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[status]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[priority]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[department]", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the tickets as a JSON response\n\n\n\nPaginated set of `TicketResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/TicketResource" } }, "links": { "type": "object", "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "prev": { "type": "string" }, "next": { "type": "string" } } }, "meta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "from": { "type": [ "integer", "null" ] }, "path": { "type": [ "string", "null" ], "description": "Base path for paginator generated URLs." }, "per_page": { "type": "integer", "description": "Number of items shown per page." }, "to": { "type": [ "integer", "null" ], "description": "Number of the last item in the slice." } }, "required": [ "current_page", "from", "path", "per_page", "to" ] }, "included": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/TicketMessageResource" }, { "$ref": "#/components/schemas/UserResource" } ] } } }, "required": [ "data", "links", "meta" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "post": { "operationId": "v1.admin.tickets.store", "summary": "Create a new ticket", "tags": [ "Tickets" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTicketRequest" } } } }, "responses": { "200": { "description": "Return the created ticket as a JSON response\n\n\n\n`TicketResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/TicketResource" } }, "required": [ "data" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/tickets/{ticket}": { "get": { "operationId": "v1.admin.tickets.show", "summary": "Show a specific ticket", "tags": [ "Tickets" ], "parameters": [ { "name": "ticket", "in": "path", "required": true, "description": "The ticket ID", "schema": { "type": "integer" } }, { "name": "include", "in": "query", "description": "Available includes are `messages`, `messagesCount`, `messagesExists`, `user`, `userCount`, `userExists`, `assigned_to`, `assigned_toCount`, `assigned_toExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the ticket as a JSON response\n\n\n\n`TicketResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/TicketResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "put": { "operationId": "v1.admin.tickets.update", "summary": "Update a specific ticket", "tags": [ "Tickets" ], "parameters": [ { "name": "ticket", "in": "path", "required": true, "description": "The ticket ID", "schema": { "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTicketRequest" } } } }, "responses": { "200": { "description": "Return the updated ticket as a JSON response\n\n\n\n`TicketResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/TicketResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "delete": { "operationId": "v1.admin.tickets.destroy", "summary": "Delete a specific ticket", "tags": [ "Tickets" ], "parameters": [ { "name": "ticket", "in": "path", "required": true, "description": "The ticket ID", "schema": { "type": "integer" } } ], "responses": { "204": { "description": "No content" }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/ticket-messages": { "get": { "operationId": "v1.admin.ticket-messages.index", "summary": "List TicketMessages", "tags": [ "Ticket Messages" ], "parameters": [ { "name": "sort", "in": "query", "description": "Available sorts are `id`, `created_at`, `updated_at`, `currency_code`. You can sort by multiple options by separating them with a comma. To sort in descending order, use `-` sign in front of the sort, for example: `-id`.", "schema": { "type": "string" } }, { "name": "include", "in": "query", "description": "Available includes are `user`, `userCount`, `userExists`, `ticket`, `ticketCount`, `ticketExists`, `attachments`, `attachmentsCount`, `attachmentsExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "description": "How many items to show per page.", "schema": { "type": "integer", "default": 15 }, "example": 20 }, { "name": "page", "in": "query", "description": "Which page to show.", "schema": { "type": "integer" }, "example": 2 }, { "name": "filter[id]", "in": "query", "schema": { "type": "string" } }, { "name": "filter[currency_code]", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the ticketMessages as a JSON response\n\n\n\nPaginated set of `TicketMessageResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/TicketMessageResource" } }, "links": { "type": "object", "properties": { "first": { "type": "string" }, "last": { "type": "string" }, "prev": { "type": "string" }, "next": { "type": "string" } } }, "meta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "from": { "type": [ "integer", "null" ] }, "path": { "type": [ "string", "null" ], "description": "Base path for paginator generated URLs." }, "per_page": { "type": "integer", "description": "Number of items shown per page." }, "to": { "type": [ "integer", "null" ], "description": "Number of the last item in the slice." } }, "required": [ "current_page", "from", "path", "per_page", "to" ] }, "included": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/UserResource" }, { "$ref": "#/components/schemas/TicketResource" }, { "$ref": "#/components/schemas/TicketAttachmentResource" } ] } } }, "required": [ "data", "links", "meta" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "post": { "operationId": "v1.admin.ticket-messages.store", "summary": "Create a new ticketMessage", "tags": [ "Ticket Messages" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTicketMessageRequest" } } } }, "responses": { "200": { "description": "Return the created ticketMessage as a JSON response\n\n\n\n`TicketMessageResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/TicketMessageResource" } }, "required": [ "data" ] } } } }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } }, "/v1/admin/ticket-messages/{ticketMessage}": { "get": { "operationId": "v1.admin.ticket-messages.show", "summary": "Show a specific ticketMessage", "tags": [ "Ticket Messages" ], "parameters": [ { "name": "ticketMessage", "in": "path", "required": true, "description": "The ticket message ID", "schema": { "type": "integer" } }, { "name": "include", "in": "query", "description": "Available includes are `user`, `userCount`, `userExists`, `ticket`, `ticketCount`, `ticketExists`, `attachments`, `attachmentsCount`, `attachmentsExists`. You can include multiple options by separating them with a comma.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Return the ticketMessage as a JSON response\n\n\n\n`TicketMessageResource`", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/TicketMessageResource" } }, "required": [ "data" ] } } } }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } }, "delete": { "operationId": "v1.admin.ticket-messages.destroy", "summary": "Delete a specific ticketMessage", "tags": [ "Ticket Messages" ], "parameters": [ { "name": "ticketMessage", "in": "path", "required": true, "description": "The ticket message ID", "schema": { "type": "integer" } } ], "responses": { "204": { "description": "No content" }, "404": { "$ref": "#/components/responses/ModelNotFoundException" }, "422": { "$ref": "#/components/responses/ValidationException" }, "403": { "$ref": "#/components/responses/AuthorizationException" } } } } }, "components": { "securitySchemes": { "http": { "type": "http", "scheme": "bearer" } }, "schemas": { "AffiliateOrderResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string" }, "attributes": { "type": "object", "properties": { "id": { "type": "string" }, "order_id": { "type": "string" } }, "required": [ "id", "order_id" ] } }, "required": [ "id", "type" ], "title": "AffiliateOrderResource" }, "AffiliateOrderResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string" }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "AffiliateOrderResourceIdentifier" }, "AffiliateResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string" }, "attributes": { "type": "object", "properties": { "id": { "type": "string" }, "code": { "type": "string" }, "enabled": { "type": "string" }, "visitors": { "type": "string" }, "reward": { "type": "string" }, "discount": { "type": "string" }, "earnings": { "type": "string" }, "updated_at": { "type": "string" }, "created_at": { "type": "string" } }, "required": [ "id", "code", "enabled", "visitors", "reward", "discount", "earnings", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "user": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "orders": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/AffiliateOrderResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "AffiliateResource" }, "CategoryResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "categories" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "parent_id": { "type": [ "integer", "null" ] }, "permissions": { "type": "string" }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "name", "parent_id", "permissions", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "products": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/ProductResourceIdentifier" } } }, "required": [ "data" ] }, "parent": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/CategoryResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "children": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/CategoryResourceIdentifier" } } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "CategoryResource" }, "CategoryResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "categories" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "CategoryResourceIdentifier" }, "CouponResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "coupons" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "code": { "type": "string" }, "type": { "type": "string" }, "recurring": { "type": [ "integer", "null" ] }, "value": { "type": [ "number", "null" ] }, "max_uses": { "type": [ "integer", "null" ] }, "max_uses_per_user": { "type": [ "integer", "null" ] }, "starts_at": { "type": [ "string", "null" ], "format": "date-time" }, "expires_at": { "type": [ "string", "null" ], "format": "date-time" }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "code", "type", "recurring", "value", "max_uses", "max_uses_per_user", "starts_at", "expires_at", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "services": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResourceIdentifier" } } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "CouponResource" }, "CouponResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "coupons" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "CouponResourceIdentifier" }, "CreateAffiliateRequest": { "type": "object", "properties": { "user_id": { "type": "integer" }, "code": { "type": "string", "maxLength": 255 }, "enabled": { "type": [ "boolean", "null" ] }, "reward": { "type": [ "number", "null" ], "minimum": 0, "maximum": 100 } }, "required": [ "user_id", "code" ], "title": "CreateAffiliateRequest" }, "CreateCreditRequest": { "type": "object", "properties": { "user_id": { "type": "integer" }, "currency_code": { "type": "string", "example": "USD" }, "amount": { "type": "number", "minimum": 0 } }, "required": [ "user_id", "currency_code", "amount" ], "title": "CreateCreditRequest" }, "CreateInvoiceItemRequest": { "type": "object", "properties": { "invoice_id": { "type": "integer" }, "description": { "type": "string", "maxLength": 255 }, "price": { "type": "number", "minimum": 0 }, "quantity": { "type": "integer", "minimum": 1 }, "reference_type": { "type": [ "string", "null" ], "maxLength": 255 }, "reference_id": { "type": [ "integer", "null" ] } }, "required": [ "invoice_id", "description", "price", "quantity" ], "title": "CreateInvoiceItemRequest" }, "CreateInvoiceRequest": { "type": "object", "properties": { "user_id": { "type": "integer" }, "currency_code": { "type": "string", "example": "USD" }, "due_at": { "type": [ "string", "null" ], "format": "date-time" }, "status": { "type": "string", "enum": [ "pending", "paid", "cancelled" ], "default": "pending" } }, "required": [ "user_id", "currency_code", "status" ], "title": "CreateInvoiceRequest" }, "CreateOrderRequest": { "type": "object", "properties": { "user_id": { "type": "integer" }, "currency_code": { "type": "string", "example": "USD" } }, "required": [ "user_id", "currency_code" ], "title": "CreateOrderRequest" }, "CreateServiceRequest": { "type": "object", "properties": { "product_id": { "type": "integer" }, "plan_id": { "type": "integer" }, "user_id": { "type": "integer" }, "quantity": { "type": "integer", "default": 1, "minimum": 1 }, "status": { "type": "string", "enum": [ "pending", "active", "cancelled", "suspended" ], "default": "pending" }, "expires_at": { "type": [ "string", "null" ], "format": "date-time" }, "currency_code": { "type": "string", "example": "USD" }, "price": { "type": "number", "minimum": 0 }, "coupon_id": { "type": [ "integer", "null" ] }, "subscription_id": { "type": [ "string", "null" ], "maxLength": 255 }, "order_id": { "type": [ "integer", "null" ] } }, "required": [ "product_id", "plan_id", "user_id", "quantity", "status", "currency_code", "price" ], "title": "CreateServiceRequest" }, "CreateTicketMessageRequest": { "type": "object", "properties": { "message": { "type": "string", "maxLength": 5000 }, "user_id": { "type": "integer" }, "ticket_id": { "type": "integer" } }, "required": [ "message", "user_id", "ticket_id" ], "title": "CreateTicketMessageRequest" }, "CreateTicketRequest": { "type": "object", "properties": { "subject": { "type": "string", "maxLength": 255 }, "user_id": { "type": "integer" }, "department": { "type": [ "string", "null" ], "enum": [ "Support", "Sales" ] }, "priority": { "type": "string", "enum": [ "low", "medium", "high" ] }, "status": { "type": "string", "enum": [ "open", "closed", "replied" ] } }, "required": [ "subject", "user_id", "priority", "status" ], "title": "CreateTicketRequest" }, "CreateUserRequest": { "type": "object", "properties": { "first_name": { "type": [ "string", "null" ], "maxLength": 255 }, "last_name": { "type": [ "string", "null" ], "maxLength": 255 }, "email": { "type": "string", "format": "email", "maxLength": 255 }, "password": { "type": "string", "minLength": 8 }, "email_verified_at": { "type": [ "string", "null" ], "format": "date-time" }, "role_id": { "type": [ "integer", "null" ] } }, "required": [ "email", "password" ], "title": "CreateUserRequest" }, "CreditResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "credits" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "currency_code": { "type": "string" }, "amount": { "type": "string" }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "currency_code", "amount", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "user": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "CreditResource" }, "CreditResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "credits" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "CreditResourceIdentifier" }, "InvoiceItemResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "invoiceItems" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "description": { "type": [ "string", "null" ] }, "quantity": { "type": "integer" }, "price": { "type": "string" }, "reference_type": { "type": [ "string", "null" ] }, "reference_id": { "type": [ "integer", "null" ] }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "description", "quantity", "price", "reference_type", "reference_id", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "reference": { "type": "object", "properties": { "data": { "anyOf": [ { "anyOf": [ { "$ref": "#/components/schemas/ServiceResourceIdentifier" }, { "type": "null" } ] }, { "anyOf": [ { "$ref": "#/components/schemas/ServiceUpgradeResourceIdentifier" }, { "type": "null" } ] }, { "anyOf": [ { "$ref": "#/components/schemas/CreditResourceIdentifier" }, { "type": "null" } ] } ] } }, "required": [ "data" ] }, "invoice": { "type": "object", "properties": { "data": { "anyOf": [ { "anyOf": [ { "$ref": "#/components/schemas/InvoiceResourceIdentifier" }, { "type": "null" } ] }, { "type": "object" } ] } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "InvoiceItemResource" }, "InvoiceItemResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "invoiceItems" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "InvoiceItemResourceIdentifier" }, "InvoiceResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "invoices" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "status": { "type": "string" }, "currency_code": { "type": "string" }, "due_at": { "type": [ "string", "null" ], "format": "date-time" }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "status", "currency_code", "due_at", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "user": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "items": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceItemResourceIdentifier" } } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "InvoiceResource" }, "InvoiceResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "invoices" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "InvoiceResourceIdentifier" }, "OrderResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "orders" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "currency_code": { "type": "string" }, "user_id": { "type": "integer" }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "currency_code", "user_id", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "services": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResourceIdentifier" } } }, "required": [ "data" ] }, "user": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "OrderResource" }, "OrderResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "orders" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "OrderResourceIdentifier" }, "PlanResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "plans" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": [ "string", "null" ] }, "type": { "type": "string" }, "billing_period": { "type": [ "integer", "null" ] }, "billing_unit": { "type": [ "string", "null" ] }, "sort": { "type": [ "integer", "null" ] } }, "required": [ "id", "name", "type", "billing_period", "billing_unit", "sort" ] }, "relationships": { "type": "object", "properties": { "prices": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/PriceResourceIdentifier" } } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "PlanResource" }, "PlanResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "plans" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "PlanResourceIdentifier" }, "PriceResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "prices" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "PriceResourceIdentifier" }, "ProductResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "products" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "description": { "type": [ "string", "null" ] }, "image": { "type": [ "string", "null" ] }, "slug": { "type": [ "string", "null" ] }, "stock": { "type": [ "integer", "null" ] }, "per_user_limit": { "type": [ "integer", "null" ] }, "sort": { "type": [ "integer", "null" ] }, "allow_quantity": { "type": "string" }, "email_template": { "type": [ "string", "null" ] }, "hidden": { "type": "integer" }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "name", "description", "image", "slug", "stock", "per_user_limit", "sort", "allow_quantity", "email_template", "hidden", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "category": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/CategoryResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "plans": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/PlanResourceIdentifier" } } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "ProductResource" }, "ProductResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "products" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "ProductResourceIdentifier" }, "PropertyResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "properties" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": [ "string", "null" ] }, "key": { "type": "string" }, "value": { "type": "string" }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "name", "key", "value", "updated_at", "created_at" ] } }, "required": [ "id", "type" ], "title": "PropertyResource" }, "PropertyResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "properties" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "PropertyResourceIdentifier" }, "RoleResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "roles" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "permissions": { "type": [ "array", "null" ], "items": {} }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "name", "permissions", "updated_at", "created_at" ] } }, "required": [ "id", "type" ], "title": "RoleResource" }, "RoleResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "roles" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "RoleResourceIdentifier" }, "ServiceResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "services" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "quantity": { "type": "integer" }, "price": { "type": "string" }, "status": { "type": "string" }, "currency_code": { "type": "string" }, "expires_at": { "type": [ "string", "null" ], "format": "date-time" }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "quantity", "price", "status", "currency_code", "expires_at", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "coupon": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/CouponResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "user": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "order": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/OrderResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "product": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/ProductResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "invoices": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceResourceIdentifier" } } }, "required": [ "data" ] }, "properties": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/PropertyResourceIdentifier" } } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "ServiceResource" }, "ServiceResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "services" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "ServiceResourceIdentifier" }, "ServiceUpgradeResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "serviceUpgrades" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "status": { "type": "string" }, "service_id": { "type": "integer" }, "plan_id": { "type": "integer" }, "product_id": { "type": "integer" }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "status", "service_id", "plan_id", "product_id", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "service": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/PropertyResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "invoice": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/InvoiceResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "ServiceUpgradeResource" }, "ServiceUpgradeResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "serviceUpgrades" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "ServiceUpgradeResourceIdentifier" }, "TicketAttachmentResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string" }, "attributes": { "type": "object", "properties": { "id": { "type": "string" }, "uuid": { "type": "string" }, "filename": { "type": "string" }, "path": { "type": "string" }, "filesize": { "type": "string" }, "mime_type": { "type": "string" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": [ "id", "uuid", "filename", "path", "filesize", "mime_type", "created_at", "updated_at" ] }, "relationships": { "type": "object", "properties": { "message": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/TicketMessageResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "TicketAttachmentResource" }, "TicketAttachmentResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string" }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "TicketAttachmentResourceIdentifier" }, "TicketMessageResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "ticketMessages" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "message": { "type": "string" }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "message", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "user": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "ticket": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/TicketResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "attachments": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/TicketAttachmentResourceIdentifier" } } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "TicketMessageResource" }, "TicketMessageResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "ticketMessages" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "TicketMessageResourceIdentifier" }, "TicketResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "tickets" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "subject": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string" }, "assigned_to": { "type": [ "integer", "null" ] }, "user_id": { "type": "integer" }, "department": { "type": [ "string", "null" ] }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "subject", "status", "priority", "assigned_to", "user_id", "department", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "messages": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/TicketMessageResourceIdentifier" } } }, "required": [ "data" ] }, "user": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] }, "assigned_to": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/UserResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "TicketResource" }, "TicketResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "tickets" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "TicketResourceIdentifier" }, "UpdateAffiliateRequest": { "type": "object", "properties": { "user_id": { "type": [ "integer", "null" ] }, "code": { "type": [ "string", "null" ], "maxLength": 255 }, "enabled": { "type": [ "boolean", "null" ] }, "reward": { "type": [ "number", "null" ], "minimum": 0, "maximum": 100 } }, "title": "UpdateAffiliateRequest" }, "UpdateCreditRequest": { "type": "object", "properties": { "currency_code": { "type": "string", "example": "USD" }, "amount": { "type": "number", "minimum": 0 } }, "title": "UpdateCreditRequest" }, "UpdateInvoiceItemRequest": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 255 }, "quantity": { "type": "integer", "minimum": 1 }, "price": { "type": "number", "minimum": 0 }, "reference_type": { "type": "string", "maxLength": 100 }, "reference_id": { "type": "integer" } }, "title": "UpdateInvoiceItemRequest" }, "UpdateInvoiceRequest": { "type": "object", "properties": { "user_id": { "type": "integer" }, "currency_code": { "type": "string", "example": "USD" }, "due_at": { "type": [ "string", "null" ], "format": "date-time" }, "status": { "type": "string", "enum": [ "pending", "paid", "cancelled" ], "default": "pending" } }, "title": "UpdateInvoiceRequest" }, "UpdateOrderRequest": { "type": "object", "properties": { "user_id": { "type": "integer" }, "currency_code": { "type": "string", "example": "USD" } }, "title": "UpdateOrderRequest" }, "UpdateServiceRequest": { "type": "object", "properties": { "product_id": { "type": "integer" }, "plan_id": { "type": "integer" }, "user_id": { "type": "integer" }, "quantity": { "type": "integer", "default": 1, "minimum": 1 }, "status": { "type": "string", "enum": [ "pending", "active", "cancelled", "suspended" ], "default": "pending" }, "expires_at": { "type": [ "string", "null" ], "format": "date-time" }, "currency_code": { "type": "string", "example": "USD" }, "price": { "type": "number", "minimum": 0 }, "coupon_id": { "type": [ "integer", "null" ] }, "subscription_id": { "type": [ "string", "null" ], "maxLength": 255 }, "order_id": { "type": [ "integer", "null" ] } }, "title": "UpdateServiceRequest" }, "UpdateTicketRequest": { "type": "object", "properties": { "subject": { "type": "string", "maxLength": 255 }, "user_id": { "type": "integer" }, "department": { "type": [ "string", "null" ], "enum": [ "Support", "Sales" ] }, "priority": { "type": "string", "enum": [ "low", "medium", "high" ] }, "status": { "type": "string", "enum": [ "open", "closed", "replied" ] } }, "title": "UpdateTicketRequest" }, "UpdateUserRequest": { "type": "object", "properties": { "first_name": { "type": [ "string", "null" ], "maxLength": 255 }, "last_name": { "type": [ "string", "null" ], "maxLength": 255 }, "email": { "type": "string", "format": "email", "maxLength": 255 }, "password": { "type": "string", "minLength": 8 }, "email_verified_at": { "type": [ "string", "null" ], "format": "date-time" }, "role_id": { "type": [ "integer", "null" ] } }, "title": "UpdateUserRequest" }, "UserResource": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "users" ] }, "attributes": { "type": "object", "properties": { "id": { "type": "integer" }, "first_name": { "type": [ "string", "null" ] }, "last_name": { "type": [ "string", "null" ] }, "email": { "type": "string" }, "email_verified_at": { "type": [ "string", "null" ], "format": "date-time" }, "updated_at": { "type": [ "string", "null" ], "format": "date-time" }, "created_at": { "type": [ "string", "null" ], "format": "date-time" } }, "required": [ "id", "first_name", "last_name", "email", "email_verified_at", "updated_at", "created_at" ] }, "relationships": { "type": "object", "properties": { "properties": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/PropertyResourceIdentifier" } } }, "required": [ "data" ] }, "orders": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/OrderResourceIdentifier" } } }, "required": [ "data" ] }, "services": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResourceIdentifier" } } }, "required": [ "data" ] }, "invoices": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceResourceIdentifier" } } }, "required": [ "data" ] }, "tickets": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/TicketResourceIdentifier" } } }, "required": [ "data" ] }, "credits": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/CreditResourceIdentifier" } } }, "required": [ "data" ] }, "role": { "type": "object", "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/RoleResourceIdentifier" }, { "type": "null" } ] } }, "required": [ "data" ] } } } }, "required": [ "id", "type" ], "title": "UserResource" }, "UserResourceIdentifier": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "users" ] }, "id": { "type": "string" } }, "required": [ "type", "id" ], "title": "UserResourceIdentifier" } }, "responses": { "ValidationException": { "description": "Validation error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "Errors overview." }, "errors": { "type": "object", "description": "A detailed description of each field that failed validation.", "additionalProperties": { "type": "array", "items": { "type": "string" } } } }, "required": [ "message", "errors" ] } } } }, "AuthorizationException": { "description": "Authorization error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "Error overview." } }, "required": [ "message" ] } } } }, "ModelNotFoundException": { "description": "Not found", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "Error overview." } }, "required": [ "message" ] } } } } } } }