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: []