openapi: 3.0.1 info: title: Apicbase Ingredients Recipes API description: REST API for the Apicbase food & beverage back-of-house management platform. Exposes the product library (ingredients, recipes, stock items), inventory, procurement (purchase orders, suppliers), and outlets (accounts) over HTTPS with OAuth 2.0 bearer-token authentication. Endpoint paths, methods, and parameters in this document reflect the public developer documentation at https://developers.apicbase.com. termsOfService: https://www.apicbase.com/terms-of-service contact: name: Apicbase API Support url: https://developers.apicbase.com/docs/welcome version: '2.0' servers: - url: https://api.apicbase.com description: Apicbase production API security: - oauth2: [] tags: - name: Recipes description: Recipes and menu engineering entities. paths: /api/v2/products/recipes/: get: operationId: listRecipes tags: - Recipes summary: Get recipes description: Returns a paginated list of recipes in the active library. parameters: - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/Ordering' - name: uid in: query description: Filter by recipe UID. schema: type: string - name: name in: query schema: type: string responses: '200': description: A paginated list of recipes. content: application/json: schema: $ref: '#/components/schemas/PaginatedRecipeList' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createRecipe tags: - Recipes summary: Create a recipe requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecipeWrite' responses: '201': description: The created recipe. content: application/json: schema: $ref: '#/components/schemas/Recipe' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' components: schemas: PaginatedRecipeList: allOf: - $ref: '#/components/schemas/Pagination' - type: object properties: results: type: array items: $ref: '#/components/schemas/Recipe' Error: type: object properties: detail: type: string description: Human-readable error message. RecipeWrite: type: object required: - name properties: name: type: string uid: type: string category: type: string sell_price: type: number format: float Pagination: type: object properties: count: type: integer next: type: string nullable: true previous: type: string nullable: true Recipe: type: object properties: id: type: string uid: type: string name: type: string category: type: string sell_price: type: number format: float created_date: type: string format: date-time responses: Unauthorized: description: Missing or invalid access token. content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: The request was malformed or failed validation. content: application/json: schema: $ref: '#/components/schemas/Error' parameters: Ordering: name: ordering in: query description: Field to order results by. schema: type: string Page: name: page in: query description: Page number for paginated results. schema: type: integer format: int32 securitySchemes: oauth2: type: oauth2 description: OAuth 2.0 authorization code flow. Access tokens are bearer tokens valid for 7 days; refresh tokens obtain new access tokens. Include the token in the Authorization header as "Bearer ACCESS_TOKEN". flows: authorizationCode: authorizationUrl: https://app.apicbase.com/oauth/authorize/ tokenUrl: https://api.apicbase.com/oauth/token/ refreshUrl: https://api.apicbase.com/oauth/token/ scopes: accounts: Access account and outlet data. library: Access library data (ingredients, recipes, stock).