# Test and edit this file at https://editor.swagger.io/ openapi: 3.0.0 info: version: 1.0.0 title: TableCheck API - Site Controller V1 description: Add here termsOfService: https://tablecheck.atlassian.net/wiki/spaces/API/pages/61571353/TableCheck+API+Terms+of+Service externalDocs: description: Implementation Guide url: https://tablecheck.atlassian.net/wiki/spaces/API/pages/1739194852/Site+Controller+v1 servers: - url: https://api.tablecheck.com/api/site/v1/ description: Production (uses live data) paths: /shops: get: summary: List all Shops operationId: listShops tags: - shops parameters: - name: ids in: query description: Array or comma-separated list of specific IDs to return. required: false schema: type: string format: bson-id - name: slugs in: query description: Array or comma-separated list of specific slugs to return. required: false schema: type: string format: bson-id - name: franchise_ids in: query description: Array or comma-separated list of specific Franchise IDs to return. required: false schema: type: string format: bson-id - name: page in: query description: The zero-based page number. Used for pagination. required: false schema: type: number format: integer minimum: 0 - name: per_page in: query description: Number of items to return at once. Used for pagination. required: false schema: type: number format: integer default: 100 minimum: 1 maximum: 1000 - $ref: '#/components/parameters/IncludeFields' - $ref: '#/components/parameters/ExcludeFields' responses: '200': description: A paged array of Shops content: application/json: schema: $ref: "#/components/schemas/ShopsListResponse" '403': &ForbiddenError description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ForbiddenError" /shops/{shop_id}: get: summary: Fetch a specific shop operationId: showShopById tags: - shops parameters: - name: shop_id in: path required: true description: The id or slug of the shop to retrieve schema: type: string - $ref: '#/components/parameters/IncludeFields' - $ref: '#/components/parameters/ExcludeFields' responses: '200': description: Shop settings including Sheets and Tables content: application/json: schema: $ref: "#/components/schemas/ShopShowResponse" '403': *ForbiddenError components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: AUTHORIZATION parameters: IncludeFields: name: include_fields in: query description: Comma-separated list of fields to include in the response (whitelist). If specified, only the listed fields will be returned. Supports dot notation for nested fields. required: false schema: type: string example: id,name,addresses.city ExcludeFields: name: exclude_fields in: query description: Comma-separated list of fields to exclude from the response (blacklist). All fields except the given ones will be returned. Supports dot notation for nested fields. required: false schema: type: string example: created_at,socials.username schemas: Address: properties: street: type: string example: "2-14-5 Ginza" street2: type: string example: "Dai-27 Chuo Bldg 4F" city: type: string example: "Chuo-ku" region: type: string example: "Tokyo" postal_code: type: string example: "104-0061" country: type: string example: "JP" DurationRule: type: object properties: id: description: TableCheck's database ID of the DurationRule. type: string format: bson-id example: ae5355ca1fd337ed5d6893e3 num_people: description: Minimum no. of guests for which this DurationRule will be applied. type: number format: integer example: 3 duration: description: The default reservation duration is set to this value (in seconds). type: number format: integer example: 7200 is_end_of_meal: description: Extends reservation duration to end of meal. type: boolean example: true TimeCutoff: type: object properties: id: description: TableCheck's database ID of the TimeCutoff. type: string format: bson-id example: ae5355ca1fd337ed5d6893e4 month: description: Number of months within/after an online reservation can be booked. type: number format: integer example: 2 month_day: description: Number of days used in month cutoff calculation if set. type: number format: integer example: 15 month_time: description: Number of seconds used in month cutoff calculation if set. type: number format: integer example: 7200 day: description: Number of days within/after an online reservation can be booked. type: number format: integer example: 7 day_time: description: Number of seconds used in day cutoff calculation if set. type: number format: integer example: 7200 time: description: Number of seconds within/after an online reservation can be booked. type: number format: integer example: 7200 Turnover: type: object properties: id: description: TableCheck's database ID of the Turnover. type: string format: bson-id example: ae5355ca1fd337ed5d6893e4 start_time: description: |- The earliest hour of day (expressed in seconds) at which reservations may start in the turnover. May be a value greater than 24-hours (86400 seconds), which indicates the next day. In case of Daylight Saving Time ambiguity, use the earliest time, or round earlier to the nearest possible time. type: number format: integer example: 72000 last_order_time: description: |- The latest hour of day (expressed in seconds) at which reservations may start in the turnover. If not specified, reservations may only start exact at start_time. May be a value greater than 24-hours (86400 seconds), which indicates the next day. In case of Daylight Saving Time ambiguity, use the latest time, or round later to the nearest possible time. type: number format: integer example: 75600 end_time: description: |- The latest hour of day (expressed in seconds) at which reservations may end in the turnover. If not specified, there is no turnover restriction on when reservations may end. May be a value greater than 24-hours (86400 seconds), which indicates the next day. In case of Daylight Saving Time ambiguity, use the latest time, or round later to the nearest possible time. type: number format: integer example: 90000 FloorPlan: type: object properties: id: description: TableCheck's database ID of the FloorPlan. type: string format: bson-id example: 5ca1fd6893e433ae5357ed5d name: description: The name of the FloorPlan (internal use only). type: string sections: type: array items: $ref: "#/components/schemas/Section" tables: type: array items: $ref: "#/components/schemas/Table" table_combos: type: array items: $ref: "#/components/schemas/TableCombo" Section: type: object properties: id: description: TableCheck's database ID of the Section. type: string format: bson-id example: 5357ed5dc5893e433aea1fd6 name: description: The name of the Section (internal use only). type: string Table: type: object properties: id: description: TableCheck's database ID of the Table. type: string format: bson-id example: ea1fd65d5357ed3ac5893e43 section_id: description: TableCheck's database ID of the Section to which the Table belongs. type: string format: bson-id example: 5357ed5dc5893e433aea1fd6 name: description: The name of the Section (internal use only). type: string min_pax: description: Minimum number of guests which may be seated at the Table. type: number format: integer example: 2 max_pax: description: Maximum number of guests which may be seated at the Table. type: number format: integer example: 4 is_online: description: Indicates that the Table is available for online booking. type: boolean is_smoking: description: Indicates that the Table is in a smoking-allowed area. type: boolean seat_type: description: Seating type of the Table. type: string enum: ["open","counter","outside","curtain","private","tatami"] position_left: description: Visual horizontal (x-axis) pixel position on floor layout map. type: number format: integer example: 240 position_top: description: Visual vertical (y-axis) pixel position on floor layout map. type: number format: integer example: 240 size: description: Visual table size used for floor layout map. type: string enum: ["sm","md","lg"] shape: description: Visual table shape used for floor layout map. type: string enum: ["square","circle","rect"] rotation: description: Visual table rotation in degrees used for floor layout map. type: number format: integer enum: [0.0,45.0,90.0,135.0] turnovers: description: Turnover settings which additionally constrain seating times. Overrides Sheet-level turnovers. type: array items: $ref: "#/components/schemas/Turnover" TableCombo: type: object properties: id: description: TableCheck's database ID of the TableCombo. type: string format: bson-id example: ea1fd65d5357ed3ac5893e43 section_id: description: TableCheck's database ID of the Section to which the TableCombo belongs. type: string format: bson-id example: 5357ed5dc5893e433aea1fd6 table_ids: description: The IDs of the Tables within the TableCombo. type: array items: type: string format: bson-id example: ea1fd65d5357ed3ac5893e43 min_pax: description: Minimum number of guests which may be seated at the TableCombo. May be different than the sum of the Tables' min pax. type: number format: integer example: 2 max_pax: description: Maximum number of guests which may be seated at the TableCombo. May be different than the sum of the Tables' max pax. type: number format: integer example: 4 is_online: description: Indicates that the TableCombo is available for online booking. type: boolean is_smoking: description: Indicates that the TableCombo is in a smoking-allowed area. type: boolean seat_type: description: Seating type of the TableCombo. type: string enum: ["open","counter","outside","curtain","private","tatami"] turnovers: description: Turnover settings which additionally constrain seating times. Overrides Sheet-level turnovers. type: array items: $ref: "#/components/schemas/Turnover" Meal: type: object properties: id: description: TableCheck's database ID of the Meal period. type: string format: bson-id example: ea1fd65d5357ed3ac5893e43 sheet_id: description: TableCheck's database ID of the Sheet to which the Meal belongs. type: string format: bson-id example: 5357ed5dc5893e433aea1fd6 date: description: The date of Meal period. type: string format: date start_at: description: The start time of Meal period. type: string format: date-time last_order_at: description: The last booking time of Meal period. Reservations should not start after this time. type: string format: date-time end_at: description: The last booking time of Meal period. Reservations should not end after this time, unless the Meal period is continuous with the next Meal period. type: string format: date-time Sheet: type: object properties: id: description: TableCheck's database ID of the Sheet. type: string format: bson-id example: ea1fd65dac5893e435357ed3 name: description: The name of the Sheet. type: string example: Weekday Dinner sheet_type: description: Type of sheet. type: string enum: ["regular","irregular","closed"] days: description: | TableCheck's database ID of the FloorPlan to which the Sheet belongs. Weekday values are "m", "tu", "w", "th", "f", "sa", "su". The value "h" indicates that the Sheet applies on holidays. type: string enum: ["m","tu","w","th","f","sa","su","h"] start_date: description: Start date of the sheet. type: string format: date example: '2021-01-01' end_date: description: End date of the sheet. type: string format: date example: '2021-02-28' start_time: description: |- The earliest hour of day (expressed in seconds) at which reservations may start in the sheet. May be a value greater than 24-hours (86400 seconds), which indicates the next day. In case of Daylight Saving Time ambiguity, use the earliest time, or round earlier to the nearest possible time. type: number format: integer example: 72000 last_order_time: description: |- The latest hour of day (expressed in seconds) at which reservations may start in the sheet. If not specified, reservations may only start exact at start_time. May be a value greater than 24-hours (86400 seconds), which indicates the next day. In case of Daylight Saving Time ambiguity, use the latest time, or round later to the nearest possible time. type: number format: integer example: 75600 end_time: description: |- The latest hour of day (expressed in seconds) at which reservations may end in the sheet. If not specified, there is no turnover restriction on when reservations may end. May be a value greater than 24-hours (86400 seconds), which indicates the next day. In case of Daylight Saving Time ambiguity, use the latest time, or round later to the nearest possible time. type: number format: integer example: 90000 floor_plan_id: description: TableCheck's database ID of the FloorPlan to which the Sheet belongs. type: string format: bson-id example: 5357ed53aea1fd6dc5893e43 meal: description: The meal name of the Sheet. type: string enum: ["all_day","breakfast","lunch","tea","dinner","night"] is_online: description: Indicates that the Sheet is available for online booking. type: boolean turnovers: description: Turnover settings which additionally constrain seating times. type: array items: $ref: "#/components/schemas/Turnover" min_time_cutoff: description: A rule which specifies the furthest time in advance a reservation may be booked. Overrides Shop-level setting if specified. $ref: "#/components/schemas/TimeCutoff" max_time_cutoff: description: A rule which specifies the closest time a reservation may be booked. Overrides Shop-level setting if specified. $ref: "#/components/schemas/TimeCutoff" duration_rules: description: Rules which specify duration of reservation based on pax. Overrides Shop-level DurationRules if specified. type: array items: $ref: "#/components/schemas/DurationRule" ShopMini: type: object properties: &ShopMiniParams id: description: TableCheck's database ID of the Shop. type: string format: bson-id example: ae5355ca1fd337ed5d6893e2 slug: description: TableCheck's web ID of Shop. type: string example: my-own-shop name_translations: type: object format: translations example: en: "Paris Cafe" fr: "Café de Paris" ja: "カフェデパリ" latitude: type: number format: float example: 35.0116 longitude: type: number format: float example: 135.7680 country: type: string format: country example: JP currency: type: string format: currency example: JPY time_zone: type: string format: time-zone example: Asia/Tokyo Shop: type: object properties: <<: *ShopMiniParams min_pax: description: Minimum number of guests required for making online reservations. type: number format: integer example: 1 max_pax: description: Maximum number of guests allowed when making online reservations. type: number format: integer example: 25 time_interval: description: Time interval for list of reservable times for online reservations in seconds. Default is 15 minutes. type: number format: integer example: 900 reservation_buffer: description: Buffer time in seconds before next online reservation can start on a table. type: number format: integer example: 900 address: $ref: "#/components/schemas/Address" min_time_cutoff: description: A rule which specifies the furthest time in advance a reservation may be booked. $ref: "#/components/schemas/TimeCutoff" max_time_cutoff: description: A rule which specifies the closest time a reservation may be booked. $ref: "#/components/schemas/TimeCutoff" duration_rules: description: Rules which specify duration of reservation based on pax. type: array items: $ref: "#/components/schemas/DurationRule" meals: type: array items: $ref: "#/components/schemas/Meal" sheets: type: array items: $ref: "#/components/schemas/Sheet" floor_plans: type: array items: $ref: "#/components/schemas/FloorPlan" ShopsListResponse: type: object properties: shops: type: array items: $ref: "#/components/schemas/ShopMini" ShopShowResponse: type: object properties: shop: $ref: "#/components/schemas/Shop" ForbiddenError: required: - errors properties: errors: type: array items: type: object properties: code: type: string example: api_key_invalid message: type: string example: Your API key is invalid. security: - ApiKeyAuth: []