{"openapi":"3.1.0","info":{"title":"Pinventory Customer API","version":"1.2.0","description":"Read-only access to your Pinventory data: machines, locations, contacts, parts, payment acceptors, maintenance, and revenue.\n\n## Authentication\nSend your API token as a bearer header: `Authorization: Bearer <token>`.\n**API tokens are generated and revoked by the business owner from [Settings → API Access](https://pinventory.app/settings#api-access) in the Pinventory app.** Tokens are shown once at creation, so store them somewhere safe.\n\n## Rate limits\nEach token is limited to 60 requests/minute and 10,000 requests/day. Responses include `X-RateLimit-Minute-Remaining` and `X-RateLimit-Day-Remaining` headers, and a 429 status with `Retry-After` header when exceeded.\n\n## Conventions\n**Money.** Amounts are plain numbers, in whatever currency you entered them in. Pinventory stores money as typed and attaches no currency to it, so this API reports none. The `locale` on `GET /v1/business` is a display preference for the app, not the denomination of your amounts. Do not read a currency out of it.\n**Dates.** Calendar fields (`purchase_date`, `period_start`) are `YYYY-MM-DD`. Timestamps (`created_at`, `closed_at`) are RFC 3339 UTC.\n**Archived rows.** A machine that you sold keeps its row, and so does a location that you closed. List endpoints return only active rows by default, which matches what the app shows you. Pass `sold=any` or `closed=any` to see everything, or `sold=true` / `closed=true` for the archive alone. Fetching one row by id always returns it, active or not.\n**Pagination.** Every list takes `limit` (max 500) and `offset`, and returns `count` as the total that matched before paging.\n\n## Changes\n**1.1.0.** Adds `GET /v1/business`. Adds the sale, catalog, condition, valuation and asset fields to `Machine`, and the close, hours, branding and Pinball Map fields to `Location`. Adds the full `manufacturer_part_numbers` and `vendor_links` lists to `Part`. Enum fields now publish their allowed values.\nSold machines and closed locations were previously returned by the list endpoints with no field to identify them. They are now excluded by default. A caller that wants the old result set should pass `sold=any` or `closed=any`."},"servers":[{"url":"https://api.pinventory.app","description":"Production"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Create a token in [Settings → API Access](https://pinventory.app/settings#api-access) (business owners only). Paste it here without the \"Bearer \" prefix — Swagger adds it automatically."}},"schemas":{"Business":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"account_type":{"type":"string","enum":["operator","collector"],"description":"`operator` runs a commercial route. `collector` tracks a personal collection."},"locale":{"type":["string","null"],"description":"Culture chosen in Settings, for example `de-DE`. It controls how the app formats numbers and dates on screen. Null means no culture is set and the app follows each viewer's browser. This is a display preference, not the currency of your stored amounts.","example":"en-US"},"date_format":{"type":["string","null"],"description":"`iso` forces `YYYY-MM-DD` in the app. Null follows the culture."},"address":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"zip":{"type":["string","null"]},"phone":{"type":["string","null"]},"email":{"type":["string","null"]},"website":{"type":["string","null"]},"logo_url":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","name","account_type","locale","date_format","address","city","state","zip","phone","email","website","logo_url","created_at"]},"Machine":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"asset_id":{"type":["string","null"],"description":"Your own asset tag for this machine."},"manufacturer":{"type":["string","null"],"description":"Free text, and editable only on amusement machines. For a machine linked to the catalog, treat the catalog game as authoritative instead of this field."},"year":{"type":["integer","null"]},"serial_number":{"type":["string","null"]},"machine_type":{"type":"string","enum":["pinball","arcade","amusement"]},"status":{"type":"string","enum":["operational","down","maintenance"]},"condition":{"type":["string","null"],"enum":["nib","huo","excellent","good","fair","poor"]},"has_nvram":{"type":"boolean","description":"Battery alerts are suppressed for a machine with NVRAM."},"kineticist_game_id":{"type":["string","null"],"format":"uuid","description":"Pinball catalog game this machine is linked to."},"igdb_game_id":{"type":["string","null"],"format":"uuid","description":"Arcade / video game catalog entry this machine is linked to."},"edition_id":{"type":["string","null"],"description":"Edition of the linked catalog game, for example `pro` or `premium`."},"location_id":{"type":["string","null"],"format":"uuid"},"section_id":{"type":["string","null"],"format":"uuid","description":"Named area inside the location, if the venue uses sections."},"purchase_date":{"type":["string","null"]},"purchase_price":{"type":["number","null"]},"seller_contact_id":{"type":["string","null"],"format":"uuid"},"is_for_sale":{"type":"boolean","description":"Listed for sale and still in the fleet. A completed sale sets `sale_date` instead."},"asking_price":{"type":["number","null"]},"listed_for_sale_at":{"type":["string","null"]},"sale_date":{"type":["string","null"],"description":"Date you sold this machine. A machine with a `sale_date` has left the active fleet and is excluded from list results unless you ask for it."},"sale_price":{"type":["number","null"]},"buyer_contact_id":{"type":["string","null"],"format":"uuid"},"purchase_transaction_id":{"type":["string","null"],"format":"uuid","description":"The deal this machine arrived on, when there was one. Set for a machine taken in a trade, where `purchase_price` is the value both sides agreed rather than cash paid."},"sale_transaction_id":{"type":["string","null"],"format":"uuid","description":"The deal this machine left on, when there was one. Set for a machine given up in a trade, where `sale_price` is the agreed value rather than cash received."},"manual_value":{"type":["number","null"],"description":"Value you set by hand. It overrides both the market estimate and the cost basis."},"custom_image_url":{"type":["string","null"]},"qr_code_token":{"type":"string","format":"uuid","description":"Identifies this machine on its public report page, which is the target its printed QR code points to."},"notes":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","asset_id","manufacturer","year","serial_number","machine_type","status","condition","has_nvram","kineticist_game_id","igdb_game_id","edition_id","location_id","section_id","purchase_date","purchase_price","seller_contact_id","is_for_sale","asking_price","listed_for_sale_at","sale_date","sale_price","buyer_contact_id","purchase_transaction_id","sale_transaction_id","manual_value","custom_image_url","qr_code_token","notes","created_at","updated_at"]},"DayHours":{"type":["object","null"],"properties":{"open":{"type":"string","description":"24-hour `HH:MM`.","example":"10:00"},"close":{"type":"string","description":"24-hour `HH:MM`.","example":"23:00"}},"required":["open","close"]},"OperatingHours":{"type":["object","null"],"properties":{"mon":{"$ref":"#/components/schemas/DayHours"},"tue":{"$ref":"#/components/schemas/DayHours"},"wed":{"$ref":"#/components/schemas/DayHours"},"thu":{"$ref":"#/components/schemas/DayHours"},"fri":{"$ref":"#/components/schemas/DayHours"},"sat":{"$ref":"#/components/schemas/DayHours"},"sun":{"$ref":"#/components/schemas/DayHours"}},"description":"One shift per day. A day that is absent or null is closed."},"Location":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"address":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"zip":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"contact_id":{"type":["string","null"],"format":"uuid"},"operating_hours":{"$ref":"#/components/schemas/OperatingHours"},"revenue_model":{"type":"string","enum":["per_play","free_play"]},"revenue_split_percent":{"type":"number","description":"Your share of revenue at this location, 0 to 100."},"payout_frequency":{"type":"string","enum":["weekly","biweekly","monthly"]},"payout_tracking_enabled":{"type":"boolean"},"last_payout_reminder_on":{"type":["string","null"]},"closed_at":{"type":["string","null"],"description":"Set when you closed this location. A closed location keeps its history and is excluded from list results unless you ask for it."},"logo_url":{"type":["string","null"]},"pinball_map_location_id":{"type":["integer","null"],"description":"Matching venue on Pinball Map, if the fleet is published there."},"pinball_map_synced_at":{"type":["string","null"]},"pinball_map_suggested_at":{"type":["string","null"]},"notes":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","address","city","state","zip","latitude","longitude","contact_id","operating_hours","revenue_model","revenue_split_percent","payout_frequency","payout_tracking_enabled","last_payout_reminder_on","closed_at","logo_url","pinball_map_location_id","pinball_map_synced_at","pinball_map_suggested_at","notes","created_at","updated_at"]},"Contact":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"first_name":{"type":["string","null"]},"last_name":{"type":["string","null"]},"business_name":{"type":["string","null"]},"email":{"type":["string","null"]},"phone":{"type":["string","null"]},"pinside_handle":{"type":["string","null"]},"facebook_handle":{"type":["string","null"]},"instagram_handle":{"type":["string","null"]},"discord_handle":{"type":["string","null"]},"notes":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","first_name","last_name","business_name","email","phone","pinside_handle","facebook_handle","instagram_handle","discord_handle","notes","created_at","updated_at"]},"PartManufacturerNumber":{"type":"object","properties":{"manufacturer_slug":{"type":["string","null"],"description":"Null for a number typed by hand against no known manufacturer."},"part_number":{"type":"string"}},"required":["manufacturer_slug","part_number"]},"PartVendorLink":{"type":"object","properties":{"vendor_slug":{"type":["string","null"],"description":"Null when the vendor is one you named yourself."},"vendor_name":{"type":["string","null"]},"vendor_url":{"type":"string"},"vendor_part_number":{"type":["string","null"]}},"required":["vendor_slug","vendor_name","vendor_url","vendor_part_number"]},"Part":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":["string","null"]},"sku":{"type":["string","null"]},"manufacturer_part_numbers":{"type":"array","items":{"$ref":"#/components/schemas/PartManufacturerNumber"},"description":"Every manufacturer number on this part, oldest first."},"vendor_links":{"type":"array","items":{"$ref":"#/components/schemas/PartVendorLink"},"description":"Every vendor that stocks this part, oldest first."},"manufacturer_part_number":{"type":["string","null"],"description":"First entry of `manufacturer_part_numbers`. Read that list instead.","deprecated":true},"vendor_name":{"type":["string","null"],"description":"First entry of `vendor_links`. Read that list instead.","deprecated":true},"vendor_url":{"type":["string","null"],"description":"First entry of `vendor_links`. Read that list instead.","deprecated":true},"unit_cost":{"type":"number"},"qty_on_hand":{"type":"integer"},"reorder_threshold":{"type":["integer","null"]},"bin_location":{"type":["string","null"]},"catalog_part_id":{"type":["string","null"],"format":"uuid","description":"Global catalog part this stock item was created from."},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","sku","manufacturer_part_numbers","vendor_links","manufacturer_part_number","vendor_name","vendor_url","unit_cost","qty_on_hand","reorder_threshold","bin_location","catalog_part_id","created_at","updated_at"]},"PaymentAcceptor":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"machine_id":{"type":["string","null"],"format":"uuid","description":"The game this unit is installed in. `null` means it is not in a game: a spare on the shelf, down, or retired."},"type":{"type":"string","enum":["bill_validator","card_system","coin_mech"]},"status":{"type":"string","enum":["active","down","retired"],"description":"Condition, which is separate from placement. `down` is out of service but still owned and still counted in value. `retired` is written off."},"manufacturer":{"type":["string","null"],"description":"Free text, and unrelated to a game's manufacturer, which comes from the games catalog."},"model":{"type":["string","null"]},"serial_number":{"type":["string","null"],"description":"Not unique. Duplicates are possible, because a typo or a placeholder must not block a record."},"purchase_place":{"type":["string","null"]},"purchase_price":{"type":["number","null"]},"purchase_date":{"type":["string","null"]},"current_value":{"type":["number","null"],"description":"Manual override of the reported value. When null, the value falls back to `purchase_price`."},"warranty_expires_at":{"type":["string","null"],"description":"Warranty status is DERIVED from this date and never stored."},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined display-only fields, as a flat object of strings (for example `{\"Voltage\": \"24VAC\"}`). The values are unvalidated text: never sum or compare them."},"notes":{"type":["string","null"]},"retired_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","machine_id","type","status","manufacturer","model","serial_number","purchase_place","purchase_price","purchase_date","current_value","warranty_expires_at","metadata","notes","retired_at","created_at","updated_at"]},"MaintenanceLog":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"machine_id":{"type":"string","format":"uuid"},"date":{"type":"string"},"type":{"type":"string","enum":["repair","preventive","cleaning","upgrade","battery_replacement"]},"description":{"type":["string","null"]},"technician":{"type":["string","null"]},"cost":{"type":"number","description":"Total for the job, including any parts and labour itemised against it."},"photo_url":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","machine_id","date","type","description","technician","cost","photo_url","created_at"]},"EarningsRecord":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"machine_id":{"type":"string","format":"uuid"},"location_id":{"type":["string","null"],"format":"uuid"},"amount":{"type":"number","description":"Gross collected before the split is applied."},"location_split_percent":{"type":"number","description":"Your share, 0 to 100, frozen onto the row when the collection was taken."},"period_start":{"type":"string"},"period_end":{"type":"string"},"created_at":{"type":"string"}},"required":["id","machine_id","location_id","amount","location_split_percent","period_start","period_end","created_at"]},"LocationRevenue":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"location_id":{"type":"string","format":"uuid"},"amount":{"type":"number"},"entry_type":{"type":"string","enum":["lump_sum","session"]},"source":{"type":"string"},"note":{"type":["string","null"]},"external_ref":{"type":["string","null"]},"period_start":{"type":"string"},"period_end":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","location_id","amount","entry_type","source","note","external_ref","period_start","period_end","created_at","updated_at"]}},"parameters":{}},"paths":{"/v1/business":{"get":{"summary":"Get your account","tags":["Business"],"security":[{"bearerAuth":[]}],"description":"The account this token belongs to, with its display preferences.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Business"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/v1/machines":{"get":{"summary":"List machines","tags":["Machines"],"security":[{"bearerAuth":[]}],"description":"Your active fleet. Machines you have sold are excluded unless `sold` says otherwise.","parameters":[{"schema":{"type":"string","enum":["operational","down","maintenance"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["pinball","arcade","amusement"]},"required":false,"name":"machine_type","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","enum":["true","false"],"description":"Listed for sale while still in the fleet. This is not the same as sold."},"required":false,"name":"is_for_sale","in":"query"},{"schema":{"type":"string","enum":["true","false","any"],"default":"false","description":"`false` returns the active fleet, `true` only machines you have sold, `any` both."},"required":false,"name":"sold","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Machine"}},"count":{"type":"integer"}},"required":["data","count"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/v1/machines/{id}":{"get":{"summary":"Get a machine","tags":["Machines"],"security":[{"bearerAuth":[]}],"description":"Returns the machine whether or not you have sold it.","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Machine"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/v1/locations":{"get":{"summary":"List locations","tags":["Locations"],"security":[{"bearerAuth":[]}],"description":"Your open locations. Locations you have closed are excluded unless `closed` says otherwise.","parameters":[{"schema":{"type":"string","enum":["true","false","any"],"default":"false","description":"`false` returns open locations, `true` only closed ones, `any` both."},"required":false,"name":"closed","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Location"}},"count":{"type":"integer"}},"required":["data","count"]}}}}}}},"/v1/locations/{id}":{"get":{"summary":"Get a location","tags":["Locations"],"security":[{"bearerAuth":[]}],"description":"Returns the location whether or not you have closed it.","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Location"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/v1/contacts":{"get":{"summary":"List contacts","tags":["Contacts"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Contact"}},"count":{"type":"integer"}},"required":["data","count"]}}}}}}},"/v1/contacts/{id}":{"get":{"summary":"Get a contact","tags":["Contacts"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/v1/parts":{"get":{"summary":"List parts inventory","tags":["Parts"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Part"}},"count":{"type":"integer"}},"required":["data","count"]}}}}}}},"/v1/parts/{id}":{"get":{"summary":"Get a part","tags":["Parts"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Part"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/v1/payment-acceptors":{"get":{"summary":"List payment acceptors","tags":["Payment acceptors"],"security":[{"bearerAuth":[]}],"description":"Bill validators, card systems and coin mechs you own. A unit is tracked one at a time and moves between games, so `machine_id` is where it is NOW, not where it has always been.","parameters":[{"schema":{"type":"string","format":"uuid","description":"Only units installed in this game."},"required":false,"name":"machine_id","in":"query"},{"schema":{"type":"string","enum":["true","false","any"],"default":"any","description":"`true` returns only units not in a game, `false` only installed ones."},"required":false,"name":"unassigned","in":"query"},{"schema":{"type":"string","enum":["active","down","retired"],"description":"Filter by condition."},"required":false,"name":"status","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PaymentAcceptor"}},"count":{"type":"integer"}},"required":["data","count"]}}}}}}},"/v1/payment-acceptors/{id}":{"get":{"summary":"Get a payment acceptor","tags":["Payment acceptors"],"security":[{"bearerAuth":[]}],"description":"Returns the unit whether or not it is currently installed in a game.","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentAcceptor"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/v1/maintenance-logs":{"get":{"summary":"List maintenance logs","tags":["Maintenance"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":false,"name":"machine_id","in":"query"},{"schema":{"type":"string","enum":["repair","preventive","cleaning","upgrade","battery_replacement"]},"required":false,"name":"type","in":"query"},{"schema":{"type":"string","description":"Earliest `date`, inclusive. `YYYY-MM-DD`."},"required":false,"name":"from","in":"query"},{"schema":{"type":"string","description":"Latest `date`, inclusive. `YYYY-MM-DD`."},"required":false,"name":"to","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MaintenanceLog"}},"count":{"type":"integer"}},"required":["data","count"]}}}}}}},"/v1/earnings":{"get":{"summary":"List earnings records","tags":["Revenue"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":false,"name":"machine_id","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EarningsRecord"}},"count":{"type":"integer"}},"required":["data","count"]}}}}}}},"/v1/location-revenue":{"get":{"summary":"List location revenue records","tags":["Revenue"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LocationRevenue"}},"count":{"type":"integer"}},"required":["data","count"]}}}}}}}},"webhooks":{}}