Spaces:
Runtime error
Runtime error
{ | |
"openapi": "3.0.0", | |
"info": { | |
"title": "Express API Documentation", | |
"version": "1.0.0", | |
"description": "This is the API documentation for my Express application." | |
}, | |
"servers": [ | |
{ | |
"url": "https://934a-45-119-30-178.ngrok-free.app" | |
} | |
], | |
"paths": { | |
"/_healthz": { | |
"get": { | |
"operationId": "getHealthZ", | |
"description": "Check server health", | |
"responses": { | |
"200": { | |
"description": "Server is healthy", | |
"content": { | |
"text/plain": { | |
"schema": { | |
"type": "string", | |
"example": "Hello World!" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/company/{companyId}": { | |
"get": { | |
"operationId": "getOrVerifyCompanyCredentials", | |
"description": "Retrieve company credentials", | |
"tags": [ | |
"Company" | |
], | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "The company ID" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Company credentials retrieved successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/CompanyCreds" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Company credentials not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/ErrorResponse" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"put": { | |
"operationId": "updateCompanyCredentials", | |
"description": "Update company credentials", | |
"tags": [ | |
"Company" | |
], | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "The company ID" | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/CompanyCreds" | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Company credentials updated successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/ErrorResponse" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/company/{companyId}/applications": { | |
"get": { | |
"operationId": "getSalesChannelByCompany", | |
"description": "Retrieve applications for a specific company", | |
"tags": [ | |
"Company" | |
], | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "The ID of the company to retrieve applications for" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "List of applications for the specified company", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string", | |
"description": "Name of the application" | |
}, | |
"id": { | |
"type": "string", | |
"description": "ID of the application" | |
}, | |
"token": { | |
"type": "string", | |
"description": "Token associated with the application" | |
}, | |
"domain": { | |
"type": "string", | |
"description": "Primary domain of the application" | |
}, | |
"logo": { | |
"type": "string", | |
"description": "Logo URL of the application" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/ErrorResponse" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/company/{companyId}/brands": { | |
"get": { | |
"summary": "Retrieves a list of brands for a specific company", | |
"tags": [ | |
"Brands" | |
], | |
"operationId": "getCompanyBrands", | |
"description": "Fetches a list of brands associated with the given company ID.", | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "The unique identifier of the company" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "A list of brands", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"$ref": "#/components/schemas/Brand" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"post": { | |
"summary": "Creates a new brand for a specific company", | |
"tags": [ | |
"Brands" | |
], | |
"operationId": "createCompanyBrand", | |
"description": "Adds a new brand to the company profile.", | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "The unique identifier of the company" | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/BrandCreation" | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Brand created successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
}, | |
"id": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/company/{companyId}/brands/{brandId}": { | |
"put": { | |
"summary": "Creates a new brand for a specific company", | |
"tags": [ | |
"Brands" | |
], | |
"operationId": "updateCompanyBrand", | |
"description": "updated an existing brand.", | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "The unique identifier of the company" | |
}, | |
{ | |
"in": "path", | |
"name": "brandId", | |
"required": true, | |
"schema": { | |
"type": "number" | |
}, | |
"description": "The unique identifier of the brand" | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/BrandCreation" | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Brand updated successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
}, | |
"id": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/company/{companyId}/locations": { | |
"get": { | |
"operationId": "getLocationsByCompany", | |
"description": "get all company locations", | |
"tags": [ | |
"Company" | |
], | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "The ID of the company to add a location for" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "location list", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"properties": { | |
"id": { | |
"type": "number", | |
"description": "Location id" | |
}, | |
"code": { | |
"type": "string", | |
"description": "Location code" | |
}, | |
"name": { | |
"type": "string", | |
"description": "Location code" | |
}, | |
"documents": { | |
"type": "array", | |
"description": "Location gst documents", | |
"items": { | |
"type": "object", | |
"properties": { | |
"type": { | |
"type": "string", | |
"description": "document type" | |
}, | |
"value": { | |
"type": "string", | |
"description": "document number" | |
}, | |
"verified": { | |
"type": "boolean", | |
"description": "document number verification status" | |
}, | |
"legal_name": { | |
"type": "boolean", | |
"description": "document owner" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/ErrorResponse" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"post": { | |
"operationId": "createLocationsForCompany", | |
"description": "Add a new location for a specific company", | |
"tags": [ | |
"Company" | |
], | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "The ID of the company to add a location for" | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/CreateUpdateLocation" | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Location created successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
}, | |
"id": { | |
"type": "string", | |
"description": "Location id" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/ErrorResponse" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/company/{companyId}/locations/{locationId}": { | |
"put": { | |
"operationId": "updateLocationByCompany", | |
"description": "update a location for a specific company", | |
"tags": [ | |
"Company" | |
], | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "The ID of the company to add a location for" | |
}, | |
{ | |
"in": "path", | |
"name": "locationId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "The ID of the location to be updated" | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/CreateUpdateLocation" | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Location updated successfully", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
}, | |
"id": { | |
"type": "string", | |
"description": "Location id" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/ErrorResponse" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/company/{companyId}/products": { | |
"post": { | |
"summary": "Creates a new product for a given company.", | |
"description": "This endpoint creates a new product with various attributes including name, slug, pricing, and more.", | |
"operationId": "createProduct", | |
"tags": [ | |
"Products" | |
], | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Unique identifier of the company." | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"required": [ | |
"name", | |
"slug", | |
"seller_identifier", | |
"brand_id" | |
], | |
"properties": { | |
"name": { | |
"type": "string", | |
"description": "Name of the product." | |
}, | |
"slug": { | |
"type": "string", | |
"description": "URL-friendly identifier for the product." | |
}, | |
"seller_identifier": { | |
"type": "string", | |
"description": "Unique identifier for the seller." | |
}, | |
"brand_id": { | |
"type": "string", | |
"description": "Unique identifier for the brand." | |
}, | |
"location_id": { | |
"type": "string", | |
"description": "Location identifier for the product." | |
}, | |
"mrp": { | |
"type": "number", | |
"default": 999, | |
"description": "Maximum retail price of the product." | |
}, | |
"selling_price": { | |
"type": "number", | |
"default": 499, | |
"description": "Selling price of the product." | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful creation of the product.", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
}, | |
"id": { | |
"type": "string" | |
}, | |
"seller_identifier": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/company/{companyId}/products/{productId}/inventory": { | |
"post": { | |
"summary": "Updates inventory for a specific product.", | |
"description": "This endpoint updates the inventory details for a given product, including location, pricing, and quantity.", | |
"operationId": "updateInventory", | |
"tags": [ | |
"Inventory" | |
], | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Unique identifier of the company." | |
}, | |
{ | |
"in": "path", | |
"name": "productId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "Unique identifier of the product." | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"required": [ | |
"location_id", | |
"seller_identifier" | |
], | |
"properties": { | |
"location_id": { | |
"type": "string", | |
"description": "Location identifier where the inventory is stored." | |
}, | |
"mrp": { | |
"type": "number", | |
"default": 999, | |
"description": "Maximum retail price of the product." | |
}, | |
"selling_price": { | |
"type": "number", | |
"default": 499, | |
"description": "Selling price of the product." | |
}, | |
"seller_identifier": { | |
"type": "string", | |
"description": "Unique identifier for the seller." | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful update of inventory.", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/company/{companyId}/sales_channel": { | |
"post": { | |
"operationId": "addSalesChannel", | |
"summary": "Create a sales channel for a given company", | |
"description": "This endpoint creates a new sales channel for the specified company.", | |
"tags": [ | |
"Sales Channel" | |
], | |
"parameters": [ | |
{ | |
"in": "path", | |
"name": "companyId", | |
"required": true, | |
"schema": { | |
"type": "string" | |
}, | |
"description": "The ID of the company" | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"brand_ids": { | |
"type": "array", | |
"items": { | |
"type": "integer" | |
}, | |
"description": "Array of brand IDs to be associated with the sales channel" | |
}, | |
"name": { | |
"type": "string", | |
"description": "Name of the sales channel" | |
}, | |
"subdomain": { | |
"type": "string", | |
"description": "subdomain associated with the sales channel" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Sales channel successfully created", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
}, | |
"app": { | |
"type": "object", | |
"description": "Details of the created sales channel" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Bad request" | |
}, | |
"500": { | |
"description": "Internal server error" | |
} | |
} | |
} | |
} | |
}, | |
"components": { | |
"schemas": { | |
"CompanyCreds": { | |
"type": "object", | |
"properties": { | |
"clientId": { | |
"type": "string", | |
"description": "Client ID for the company" | |
}, | |
"clientSecret": { | |
"type": "string", | |
"description": "Client secret for the company" | |
} | |
}, | |
"required": [ | |
"clientId", | |
"clientSecret" | |
] | |
}, | |
"CreateUpdateLocation": { | |
"type": "object", | |
"required": [ | |
"code", | |
"name", | |
"gst", | |
"manager", | |
"address" | |
], | |
"properties": { | |
"code": { | |
"type": "string", | |
"description": "Unique code for the location" | |
}, | |
"name": { | |
"type": "string", | |
"description": "Name of the location" | |
}, | |
"gst": { | |
"type": "object", | |
"required": [ | |
"legal_name", | |
"value" | |
], | |
"properties": { | |
"legal_name": { | |
"type": "string", | |
"description": "Legal name for GST purposes" | |
}, | |
"value": { | |
"type": "string", | |
"description": "GST value" | |
} | |
} | |
}, | |
"manager": { | |
"type": "object", | |
"required": [ | |
"manager_name", | |
"email", | |
"number", | |
"country_code" | |
], | |
"properties": { | |
"manager_name": { | |
"type": "string", | |
"description": "Name of the manager" | |
}, | |
"email": { | |
"type": "string", | |
"description": "Email of the manager" | |
}, | |
"number": { | |
"type": "string", | |
"description": "Contact number of the manager" | |
}, | |
"country_code": { | |
"type": "string", | |
"description": "Country code for the manager's contact number" | |
} | |
} | |
}, | |
"address": { | |
"type": "object", | |
"required": [ | |
"address1", | |
"country", | |
"pincode", | |
"city", | |
"state" | |
], | |
"properties": { | |
"address1": { | |
"type": "string", | |
"description": "Primary address line" | |
}, | |
"address2": { | |
"type": "string", | |
"description": "Secondary address line" | |
}, | |
"country": { | |
"type": "string", | |
"description": "Country of the location" | |
}, | |
"pincode": { | |
"type": "string", | |
"description": "Postal code of the location" | |
}, | |
"city": { | |
"type": "string", | |
"description": "City of the location" | |
}, | |
"state": { | |
"type": "string", | |
"description": "State of the location" | |
}, | |
"latitude": { | |
"type": "number", | |
"description": "Latitude for the location" | |
}, | |
"longitude": { | |
"type": "number", | |
"description": "Longitude for the location" | |
}, | |
"landmark": { | |
"type": "string", | |
"description": "Landmark near the location" | |
} | |
} | |
} | |
} | |
}, | |
"Brand": { | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"logo": { | |
"type": "string" | |
}, | |
"id": { | |
"type": "string" | |
} | |
} | |
}, | |
"BrandCreation": { | |
"type": "object", | |
"required": [ | |
"name", | |
"logo", | |
"description" | |
], | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"logo": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "string" | |
} | |
} | |
}, | |
"ErrorResponse": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string", | |
"description": "Error message" | |
} | |
} | |
} | |
} | |
}, | |
"tags": [] | |
} |