openapi: 3.0.3 info: title: Revel Open Customers 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: Customers description: Customer records and addresses. paths: /Customer/: get: operationId: getCustomers summary: Get Customers description: Returns the list of Customer objects. Supports Tastypie field-lookup filtering, field selection, ordering, and offset pagination. tags: - Customers parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/fields' - name: order_by in: query schema: type: string example: example - name: first_name in: query schema: type: string example: Jane - name: last_name in: query schema: type: string example: Doe - name: email in: query schema: type: string format: email example: customer@example.com - name: phone_number in: query schema: type: string example: '+15551234567' - name: active in: query schema: type: boolean example: true - name: ref_number in: query schema: type: string example: REF-1001 - name: created_date in: query schema: type: string format: date-time example: '2026-06-01T12:00:00Z' - name: updated_date in: query schema: type: string format: date-time example: '2026-06-01T12:00:00Z' responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/CustomerList' examples: GetCustomers200Example: summary: Default getCustomers 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 first_name: Jane last_name: Doe email: customer@example.com phone_number: '+15551234567' ref_number: REF-1001 active: true total_purchases: 42 total_visits: 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: createCustomer summary: Create Customer description: Creates a new Customer object. tags: - Customers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Customer' examples: CreateCustomerRequestExample: summary: Default createCustomer request x-microcks-default: true value: id: 1 uuid: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d first_name: Jane last_name: Doe email: customer@example.com phone_number: '+15551234567' ref_number: REF-1001 active: true total_purchases: 42 total_visits: 42 created_date: '2026-06-01T12:00:00Z' updated_date: '2026-06-01T12:00:00Z' resource_uri: /resources/Resource/1/ responses: '201': description: Customer created content: application/json: schema: $ref: '#/components/schemas/Customer' examples: CreateCustomer201Example: summary: Default createCustomer 201 response x-microcks-default: true value: id: 1 uuid: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d first_name: Jane last_name: Doe email: customer@example.com phone_number: '+15551234567' ref_number: REF-1001 active: true total_purchases: 42 total_visits: 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 /Customer/{id}/: get: operationId: getCustomer summary: Get Customer description: Returns a single Customer object by its numeric id. tags: - Customers parameters: - $ref: '#/components/parameters/idPath' - $ref: '#/components/parameters/fields' responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/Customer' examples: GetCustomer200Example: summary: Default getCustomer 200 response x-microcks-default: true value: id: 1 uuid: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d first_name: Jane last_name: Doe email: customer@example.com phone_number: '+15551234567' ref_number: REF-1001 active: true total_purchases: 42 total_visits: 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: Customer: type: object x-schema-source: documentation x-source-url: https://developer.revelsystems.com/revelsystems/reference/getcustomers properties: id: type: integer example: 1 uuid: type: string format: uuid example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d first_name: type: string example: Jane last_name: type: string example: Doe email: type: string format: email nullable: true example: customer@example.com phone_number: type: string nullable: true example: '+15551234567' ref_number: type: string nullable: true example: REF-1001 active: type: boolean example: true total_purchases: type: integer example: 42 total_visits: type: integer 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 CustomerList: type: object properties: meta: $ref: '#/components/schemas/Meta' objects: type: array items: $ref: '#/components/schemas/Customer' 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.'