openapi: 3.0.3 info: title: Revel Open Customers Products API description: 'The Revel Open API is the REST interface for the Revel Systems cloud iPad point-of-sale platform for restaurants and retailers. It exposes core POS resources such as orders, order items, products, product modifiers, customers, establishments, employees, and labor-scheduling records. The API is built on Django Tastypie conventions: list responses return an `objects` array alongside a `meta` pagination envelope, and filtering uses Django field-lookup syntax (e.g. `id__lt`, `created_date__range`, `name__icontains`). Each Revel customer is served from a dedicated subdomain (`https://{subdomain}.revelup.com/resources/`); a shared sandbox is hosted at `https://api-sandbox-revel.revelup.com/resources/`.' version: 2025.3.0 contact: name: Revel Systems Developer Support url: https://developer.revelsystems.com/ x-generated-from: documentation x-source-url: https://developer.revelsystems.com/revelsystems/reference/welcome x-last-validated: '2026-06-03' servers: - url: https://{subdomain}.revelup.com/resources description: Production REST endpoint (per Revel establishment subdomain) variables: subdomain: default: yoursubdomain description: The customer's Revel subdomain - url: https://api-sandbox-revel.revelup.com/resources description: Shared sandbox REST endpoint security: - apiAuthentication: [] tags: - name: Products description: Product catalog and modifier resources. paths: /Product/: get: operationId: getProducts summary: Get Products description: Returns the list of Product objects. Supports Tastypie field-lookup filtering, field selection, ordering, and offset pagination. tags: - Products parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/fields' - name: order_by in: query schema: type: string enum: - sorting - id - -sorting - -id example: sorting - name: name in: query schema: type: string example: Cappuccino - name: barcode in: query schema: type: string example: 0123456789012 - name: sku in: query schema: type: string example: CAP-001 - name: category in: query schema: type: integer example: 1 - name: active in: query schema: type: boolean example: true - name: establishment in: query schema: type: integer example: 1 - name: display_online in: query schema: type: boolean example: true responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/ProductList' examples: GetProducts200Example: summary: Default getProducts 200 response x-microcks-default: true value: meta: total_count: 42 limit: 42 offset: 42 next: example previous: example objects: - id: 1 uuid: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d name: Cappuccino description: Premium roast price: 4.99 cost: 1.0 barcode: 0123456789012 sku: CAP-001 category: 1 active: true display_online: true dining_options: dine_in establishment: 1 attribute_parent: 42 attribute_type: 42 course_number: 42 created_date: '2026-06-01T12:00:00Z' updated_date: '2026-06-01T12:00:00Z' resource_uri: /resources/Resource/1/ '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimited' x-microcks-operation: delay: 0 dispatcher: FALLBACK post: operationId: createProduct summary: Create Product description: Creates a new Product object. tags: - Products requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Product' examples: CreateProductRequestExample: summary: Default createProduct request x-microcks-default: true value: id: 1 uuid: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d name: Cappuccino description: Premium roast price: 4.99 cost: 1.0 barcode: 0123456789012 sku: CAP-001 category: 1 active: true display_online: true dining_options: dine_in establishment: 1 attribute_parent: 42 attribute_type: 42 course_number: 42 created_date: '2026-06-01T12:00:00Z' updated_date: '2026-06-01T12:00:00Z' resource_uri: /resources/Resource/1/ responses: '201': description: Product created content: application/json: schema: $ref: '#/components/schemas/Product' examples: CreateProduct201Example: summary: Default createProduct 201 response x-microcks-default: true value: id: 1 uuid: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d name: Cappuccino description: Premium roast price: 4.99 cost: 1.0 barcode: 0123456789012 sku: CAP-001 category: 1 active: true display_online: true dining_options: dine_in establishment: 1 attribute_parent: 42 attribute_type: 42 course_number: 42 created_date: '2026-06-01T12:00:00Z' updated_date: '2026-06-01T12:00:00Z' resource_uri: /resources/Resource/1/ '401': $ref: '#/components/responses/Unauthorized' x-microcks-operation: delay: 0 dispatcher: FALLBACK /Product/{id}/: get: operationId: getProduct summary: Get Product description: Returns a single Product object by its numeric id. tags: - Products parameters: - $ref: '#/components/parameters/idPath' - $ref: '#/components/parameters/fields' responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/Product' examples: GetProduct200Example: summary: Default getProduct 200 response x-microcks-default: true value: id: 1 uuid: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d name: Cappuccino description: Premium roast price: 4.99 cost: 1.0 barcode: 0123456789012 sku: CAP-001 category: 1 active: true display_online: true dining_options: dine_in establishment: 1 attribute_parent: 42 attribute_type: 42 course_number: 42 created_date: '2026-06-01T12:00:00Z' updated_date: '2026-06-01T12:00:00Z' resource_uri: /resources/Resource/1/ '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' x-microcks-operation: delay: 0 dispatcher: FALLBACK components: schemas: ProductList: type: object properties: meta: $ref: '#/components/schemas/Meta' objects: type: array items: $ref: '#/components/schemas/Product' Product: type: object x-schema-source: documentation x-source-url: https://developer.revelsystems.com/revelsystems/reference/getproduct properties: id: type: integer example: 1 uuid: type: string format: uuid example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d name: type: string example: Cappuccino description: type: string nullable: true example: Premium roast price: type: number format: float example: 4.99 cost: type: number format: float nullable: true example: 1.0 barcode: type: string nullable: true example: 0123456789012 sku: type: string nullable: true example: CAP-001 category: type: integer description: Foreign key to product category. example: 1 active: type: boolean example: true display_online: type: boolean example: true dining_options: type: string nullable: true example: dine_in establishment: type: integer nullable: true example: 1 attribute_parent: type: integer nullable: true example: 42 attribute_type: type: integer nullable: true example: 42 course_number: type: integer nullable: true example: 42 created_date: type: string format: date-time example: '2026-06-01T12:00:00Z' updated_date: type: string format: date-time example: '2026-06-01T12:00:00Z' resource_uri: type: string example: /resources/Resource/1/ Meta: type: object description: Tastypie pagination envelope. properties: total_count: type: integer example: 142 limit: type: integer example: 20 offset: type: integer example: 0 next: type: string nullable: true example: /resources/Order/?limit=20&offset=20 previous: type: string nullable: true example: null parameters: fields: name: fields in: query description: Comma-separated list of direct resource attributes to return (e.g. `id,name,price`). schema: type: array items: type: string style: form explode: false offset: name: offset in: query description: Zero-based offset of the first object to return. schema: type: integer default: 0 idPath: name: id in: path required: true description: Numeric resource identifier. schema: type: integer limit: name: limit in: query description: Maximum number of objects to return per page. Use `0` to disable pagination. schema: type: integer default: 20 responses: Unauthorized: description: Authentication failed or was not provided. NotFound: description: The requested resource was not found. RateLimited: description: Too many requests. Honor the Retry-After header and back off. securitySchemes: apiAuthentication: type: apiKey in: header name: API-AUTHENTICATION description: 'API key and secret joined by a colon, e.g. `API-AUTHENTICATION: key:secret`. The key and secret may alternatively be passed as `api_key` and `api_secret` query parameters.'