{"openapi":"3.1.0","jsonSchemaDialect":"https://spec.openapis.org/oas/3.1/dialect/base","info":{"title":"Techfleet Atlas API","version":"1.0.0","summary":"The reference catalog of consumer electronics.","description":"One clean record per device: its specs, variants, regional model numbers and identifiers. Each spec is\na value and its unit, marked `typical` or `rated` where that changes the number's meaning. A spec that\nis not known yet is left out: it is never guessed.\n\nCore facts are open under CC BY 4.0: credit \"Data: Techfleet Atlas, devicedatabase.org\" with a link.\nThe change feed is proprietary, under the API terms.\n\nGet a key by signing in with a Techfleet account at https://devicedatabase.org/account, and send it as\n`Authorization: Bearer atlas_live_…`. Each plan has a burst limit and a number of requests a month\n(calendar months, UTC). Free stops at its cap (`quota_exceeded`); paid plans are never refused and pay\noverage past it. During the open preview no key is needed.\n","contact":{"name":"Techfleet Atlas","url":"https://devicedatabase.org"},"license":{"name":"CC BY 4.0 (core facts)","identifier":"CC-BY-4.0"}},"servers":[{"url":"https://api.devicedatabase.org","description":"Production"}],"tags":[{"name":"Devices","description":"Search devices and read one with its specs."},{"name":"Identify","description":"Which device is this model number?"},{"name":"Vocabulary","description":"The properties a fact may name."},{"name":"Changes","description":"What changed, for keeping your own copy in step."},{"name":"Service","description":"Health and this document."}],"security":[{},{"apiKey":[]}],"paths":{"/v1/devices":{"get":{"operationId":"listDevices","tags":["Devices"],"summary":"List devices","description":"Devices by name or model number, filtered by department or brand, sorted by name. Every word of `q` must\nappear in the brand and name (\"samsung s25\" finds the Galaxy S25 Ultra), or `q` may be an exact model number.\nMerged devices are left out. Page with `cursor`.\n","parameters":[{"$ref":"#/components/parameters/q"},{"$ref":"#/components/parameters/department"},{"$ref":"#/components/parameters/brand"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"A page of devices.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceList"},"example":{"data":[{"id":"dev_3f9a1c0b7e2d4a6f8c10","slug":"galaxy-s25-ultra","name":"Galaxy S25 Ultra","department":"phones","status":"released","announced_on":"2025-01-22","released_on":"2025-02-07","brand":{"id":"brd_5b2e8f1a9c3d7e4f6a20","name":"Samsung","slug":"samsung"},"family":{"id":"fam_8d4c2b6a1e9f3c7d5b30","name":"Galaxy S25","slug":"galaxy-s25"},"updated_at":"2026-10-20T14:03:11.204Z","image":null,"links":{"self":"https://api.devicedatabase.org/v1/devices/dev_3f9a1c0b7e2d4a6f8c10","web":"https://devicedatabase.org/d/galaxy-s25-ultra"}}],"next_cursor":"WyJHYWxheHkgUzI1IFVsdHJhIiwiZGV2XzNmOWExYzBiN2UyZDRhNmY4YzEwIl0","links":{"next":"https://api.devicedatabase.org/v1/devices?q=galaxy&cursor=WyJHYWxheHkgUzI1IFVsdHJhIiwiZGV2XzNmOWExYzBiN2UyZDRhNmY4YzEwIl0"}}}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/devices/{id}":{"get":{"operationId":"getDevice","tags":["Devices"],"summary":"Get a device","description":"One device with its variants, regional models, identifiers and specs. `facts` has a key for every property\nwith a value, in display order. Each is a list, because a rated and a typical battery capacity sit side by\nside, and so do values scoped to one storage size. A property with no value yet is left out.\n\nA device that was merged into another answers with that device, and says so in `merged_from`.\n","parameters":[{"$ref":"#/components/parameters/deviceId"},{"name":"fields","in":"query","description":"Property keys to return, comma-separated, such as `display_in,battery_mah`. See /v1/properties.","style":"form","explode":false,"schema":{"type":"array","maxItems":50,"items":{"type":"string","pattern":"^[a-z][a-z0-9_]{1,47}$"}},"example":["display_in","battery_mah"]}],"responses":{"200":{"description":"The device.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Content-Location":{"description":"Set when the id named a merged device; the device answered with.","schema":{"type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Device"},"example":{"id":"dev_3f9a1c0b7e2d4a6f8c10","slug":"galaxy-s25-ultra","name":"Galaxy S25 Ultra","department":"phones","status":"released","announced_on":"2025-01-22","released_on":"2025-02-07","brand":{"id":"brd_5b2e8f1a9c3d7e4f6a20","name":"Samsung","slug":"samsung"},"family":{"id":"fam_8d4c2b6a1e9f3c7d5b30","name":"Galaxy S25","slug":"galaxy-s25"},"updated_at":"2026-10-20T14:03:11.204Z","image":{"width":1200,"height":1200,"alt":"Galaxy S25 Ultra in Titanium Silverblue","colour":"Titanium Silverblue","example":false,"credit":"Samsung","licence":"Samsung press image","variants":[{"width":300,"url":"https://devicedatabase.org/media/devices/galaxy-s25-ultra/silverblue-300.webp"},{"width":600,"url":"https://devicedatabase.org/media/devices/galaxy-s25-ultra/silverblue-600.webp"},{"width":1200,"url":"https://devicedatabase.org/media/devices/galaxy-s25-ultra/silverblue-1200.webp"}]},"links":{"self":"https://api.devicedatabase.org/v1/devices/dev_3f9a1c0b7e2d4a6f8c10","web":"https://devicedatabase.org/d/galaxy-s25-ultra"},"variants":[{"id":"var_1a2b3c4d5e6f7a8b9c00","name":"12 GB / 256 GB","axes":{"storage_gb":256,"ram_gb":12}}],"regional_models":[{"id":"rgm_9f8e7d6c5b4a3f2e1d00","model_number":"SM-S938W","region":"CA","carrier":null}],"identifiers":[{"kind":"wikidata","value":"Q131234567"}],"images":[{"width":1200,"height":1200,"alt":"Galaxy S25 Ultra in Titanium Silverblue","colour":"Titanium Silverblue","example":false,"credit":"Samsung","licence":"Samsung press image","variants":[{"width":300,"url":"https://devicedatabase.org/media/devices/galaxy-s25-ultra/silverblue-300.webp"},{"width":600,"url":"https://devicedatabase.org/media/devices/galaxy-s25-ultra/silverblue-600.webp"},{"width":1200,"url":"https://devicedatabase.org/media/devices/galaxy-s25-ultra/silverblue-1200.webp"}]}],"facts":{"battery_mah":[{"value":5000,"unit":"mAh","kind":"typical","scope":{}}],"display_in":[{"value":6.9,"unit":"in","scope":{}}]},"licence":{"facts":"CC-BY-4.0","url":"https://creativecommons.org/licenses/by/4.0/","attribution":"Data: Techfleet Atlas, devicedatabase.org"}}}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/devices/{id}/history":{"get":{"operationId":"getDeviceHistory","tags":["Devices"],"summary":"Device history","description":"How the device's specs changed: every value shown on the device, its variants and its regional models,\nnewest first, with when it was recorded and when a newer value replaced it. Capped at the newest 1,000.\n","parameters":[{"$ref":"#/components/parameters/deviceId"}],"responses":{"200":{"description":"The history.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/History"},"example":{"device":{"id":"dev_3f9a1c0b7e2d4a6f8c10","slug":"galaxy-s25-ultra","name":"Galaxy S25 Ultra","department":"phones","status":"released","announced_on":"2025-01-22","released_on":"2025-02-07","brand":{"id":"brd_5b2e8f1a9c3d7e4f6a20","name":"Samsung","slug":"samsung"},"family":null,"updated_at":"2026-10-20T14:03:11.204Z","image":null,"links":{"self":"https://api.devicedatabase.org/v1/devices/dev_3f9a1c0b7e2d4a6f8c10","web":"https://devicedatabase.org/d/galaxy-s25-ultra"}},"data":[{"property":"weight_g","value":218,"recorded_at":"2026-10-18T09:13:02.551Z","superseded_at":null}]}}}},"304":{"$ref":"#/components/responses/NotModified"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/identify":{"get":{"operationId":"identify","tags":["Identify"],"summary":"Identify a model number","description":"A model number (A3256, SM-S938W) to its device and regional model. Any letter case.","parameters":[{"name":"model_number","in":"query","required":true,"description":"The model number printed on the device, its box or in its settings.","schema":{"type":"string","minLength":1,"maxLength":40},"example":"SM-S938W"}],"responses":{"200":{"description":"The device and regional model.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentifyResult"},"example":{"device":{"id":"dev_3f9a1c0b7e2d4a6f8c10","slug":"galaxy-s25-ultra","name":"Galaxy S25 Ultra","department":"phones","status":"released","announced_on":"2025-01-22","released_on":"2025-02-07","brand":{"id":"brd_5b2e8f1a9c3d7e4f6a20","name":"Samsung","slug":"samsung"},"family":{"id":"fam_8d4c2b6a1e9f3c7d5b30","name":"Galaxy S25","slug":"galaxy-s25"},"updated_at":"2026-10-20T14:03:11.204Z","image":null,"links":{"self":"https://api.devicedatabase.org/v1/devices/dev_3f9a1c0b7e2d4a6f8c10","web":"https://devicedatabase.org/d/galaxy-s25-ultra"}},"regional_model":{"id":"rgm_9f8e7d6c5b4a3f2e1d00","model_number":"SM-S938W","region":"CA","carrier":null}}}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/properties":{"get":{"operationId":"listProperties","tags":["Vocabulary"],"summary":"List properties","description":"The vocabulary a fact may name, in display order, with each property's type and SI unit.","parameters":[{"$ref":"#/components/parameters/department"}],"responses":{"200":{"description":"The properties.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyList"},"example":{"data":[{"key":"battery_mah","label":"Battery capacity","departments":["phones","tablets","watches"],"type":"number","unit":"mAh","group":"battery","description":"Battery capacity; the kind says rated or typical.","display_order":40}]}}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/changes":{"get":{"operationId":"listChanges","tags":["Changes"],"summary":"Changes since","description":"Devices that changed after `since` (an edit, or a fact recorded or superseded on them), oldest change first.\nPage with `cursor`, keeping the same `since`; store the last `changed_at` you saw and pass it next time.\nA device that changes again while you page turns up again later. Proprietary, under the API terms.\n","parameters":[{"name":"since","in":"query","required":true,"description":"An ISO 8601 date, or a timestamp with an offset.","schema":{"type":"string","maxLength":40},"example":"2026-10-01T00:00:00Z"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"A page of changed devices.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeList"},"example":{"data":[{"id":"dev_3f9a1c0b7e2d4a6f8c10","slug":"galaxy-s25-ultra","changed_at":"2026-10-20T14:03:11.204Z","links":{"self":"https://api.devicedatabase.org/v1/devices/dev_3f9a1c0b7e2d4a6f8c10"}}],"next_cursor":null,"links":{"next":null}}}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/health":{"get":{"operationId":"health","tags":["Service"],"summary":"Health","description":"Whether the API is up, and whether keys are required. Never needs a key; never touches the database.","security":[{}],"responses":{"200":{"description":"Up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"},"example":{"ok":true,"service":"atlas-api","version":"v1","access":"open_preview"}}}}}}},"/v1/openapi.json":{"get":{"operationId":"openapi","tags":["Service"],"summary":"This document","description":"The OpenAPI 3.1 description of this API, as JSON. Never needs a key.","security":[{}],"responses":{"200":{"description":"The OpenAPI document.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}},"content":{"application/json":{"schema":{"type":"object","required":["openapi","info","paths"],"properties":{"openapi":{"const":"3.1.0"}}}}}},"304":{"$ref":"#/components/responses/NotModified"}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"An Atlas live key, `atlas_live_…`: sign in with a Techfleet account at https://devicedatabase.org/account\nto make one. Test keys (`atlas_test_…`) are refused for now (`test_keys_unavailable`). Not needed during\nthe open preview.\n"}},"parameters":{"deviceId":{"name":"id","in":"path","required":true,"description":"An Atlas device id (`dev_…`) or its slug. Ids of merged devices answer with the device they merged into.","schema":{"type":"string","minLength":1,"maxLength":160},"example":"galaxy-s25-ultra"},"q":{"name":"q","in":"query","description":"Words of the name, or an exact model number.","schema":{"type":"string","maxLength":120},"example":"galaxy s25"},"department":{"name":"department","in":"query","description":"One department.","schema":{"$ref":"#/components/schemas/Department"}},"brand":{"name":"brand","in":"query","description":"A brand slug (`apple`) or id (`brd_…`).","schema":{"type":"string","maxLength":80}},"limit":{"name":"limit","in":"query","description":"Items per page, 1 to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},"cursor":{"name":"cursor","in":"query","description":"`next_cursor` from the previous page. Opaque: pass it back as it came.","schema":{"type":"string","maxLength":512}}},"headers":{"ETag":{"description":"Send it back in `If-None-Match` to get a 304 when nothing changed.","schema":{"type":"string"}},"Link":{"description":"The next page, as `<url>; rel=\"next\"`, when there is one.","schema":{"type":"string"}},"RateLimit":{"description":"Where you stand in each policy, comma-separated: `\"<policy>\";r=<remaining>;t=<seconds to reset>`.\nWith a key, the burst policy (r is an estimate) and then `\"month\"`, such as\n`\"free\";r=19;t=7, \"month\";r=9958;t=561600`.\n","schema":{"type":"string"}},"RateLimitPolicy":{"description":"Each policy, comma-separated: `\"<policy>\";q=<requests>;w=<window seconds>`. The burst policy is named\nafter the plan (`\"open\"` during the open preview). With a key, `\"month\"` follows: q is the plan's\nrequests a month and w the seconds left in the calendar month (UTC), such as\n`\"free\";q=20;w=10, \"month\";q=10000;w=561600`. Paid plans are not refused at the month's q.\n","schema":{"type":"string"}}},"responses":{"NotModified":{"description":"Nothing changed since the ETag you sent."},"BadRequest":{"description":"A parameter is missing or malformed (`invalid_parameter`), or the cursor is not one we issued (`invalid_cursor`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"Unauthorized":{"description":"No key (`missing_key`) or a bad one (`invalid_key`), when keys are required.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"Forbidden":{"description":"A test key (`test_keys_unavailable`), when keys are required. Test keys are not served yet.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"NotFound":{"description":"No such device (`device_not_found`) or model number (`model_number_not_found`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"TooManyRequests":{"description":"Over the burst limit (`rate_limited`), or the Free plan's requests for the month are used\n(`quota_exceeded`: upgrade at https://devicedatabase.org/account). `Retry-After` says when to try again.\n","headers":{"Retry-After":{"description":"Seconds to wait.","schema":{"type":"integer"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"Unavailable":{"description":"The catalog database cannot be reached (`catalog_unavailable`), or your key cannot be checked (`database_unavailable`). Try again shortly.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"schemas":{"Problem":{"type":"object","description":"An RFC 9457 problem document. `type` is stable; switch on it.","required":["type","title","status"],"additionalProperties":false,"properties":{"type":{"type":"string","format":"uri","example":"https://api.devicedatabase.org/problems/device_not_found"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"instance":{"type":"string"}}},"Department":{"type":"string","enum":["phones","tablets","watches","laptops","consoles","audio","cameras","monitors"]},"Date":{"type":["string","null"],"pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"Ref":{"type":"object","required":["id","name","slug"],"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}}},"DeviceSummary":{"type":"object","required":["id","slug","name","department","status","announced_on","released_on","brand","family","updated_at","image","links"],"properties":{"id":{"type":"string","pattern":"^dev_[0-9a-f]{20}$"},"slug":{"type":"string"},"name":{"type":"string"},"department":{"$ref":"#/components/schemas/Department"},"status":{"type":"string","enum":["rumoured","announced","released","discontinued"]},"announced_on":{"$ref":"#/components/schemas/Date"},"released_on":{"$ref":"#/components/schemas/Date"},"brand":{"$ref":"#/components/schemas/Ref"},"family":{"oneOf":[{"$ref":"#/components/schemas/Ref"},{"type":"null"}]},"updated_at":{"type":"string","format":"date-time"},"image":{"description":"The first image, or null when the device has none yet.","oneOf":[{"$ref":"#/components/schemas/Image"},{"type":"null"}]},"links":{"type":"object","required":["self","web"],"additionalProperties":false,"properties":{"self":{"type":"string","format":"uri","description":"This device in the API."},"web":{"type":"string","format":"uri","description":"This device on devicedatabase.org."}}}}},"Image":{"type":"object","description":"One image of the device, served from devicedatabase.org (never hotlinked) in several widths. Images are not\ncore facts and are not covered by CC BY: each carries its own `licence` and `credit`. An `example` image is a\nrender that stands for the model, not a photo of it.\n","required":["width","height","alt","colour","example","credit","licence","variants"],"additionalProperties":false,"properties":{"width":{"type":"integer","description":"Width of the original, in pixels."},"height":{"type":"integer","description":"Height of the original, in pixels."},"alt":{"type":"string","description":"Text that describes the image."},"colour":{"type":["string","null"],"description":"The colour shown, as the maker names it."},"example":{"type":"boolean","description":"A render standing for the model, not a photo of a particular unit."},"credit":{"type":["string","null"],"description":"Who to credit when showing the image."},"licence":{"type":"string","description":"The image's own licence (not CC BY)."},"variants":{"type":"array","description":"The same image at each width, for `srcset`.","items":{"type":"object","required":["width","url"],"additionalProperties":false,"properties":{"width":{"type":"integer"},"url":{"type":"string","format":"uri"}}}}}},"DeviceSummaryStrict":{"allOf":[{"$ref":"#/components/schemas/DeviceSummary"}],"unevaluatedProperties":false},"RegionalModel":{"type":"object","required":["id","model_number","region","carrier"],"additionalProperties":false,"properties":{"id":{"type":"string","pattern":"^rgm_[0-9a-f]{20}$"},"model_number":{"type":"string"},"region":{"type":["string","null"],"description":"ISO 3166-1 alpha-2, EU or GLOBAL."},"carrier":{"type":["string","null"]}}},"Value":{"description":"A number, text, true/false, a list of numbers, or a date as YYYY-MM-DD; see the property's type.","type":["number","string","boolean","array"],"items":{"type":"number"}},"Scope":{"type":"object","description":"What the value is limited to. Empty means the whole subject.","additionalProperties":false,"properties":{"storage_gb":{"type":"number"},"ram_gb":{"type":"number"},"connectivity":{"type":"string","enum":["wifi","cellular","4g","5g"]},"region":{"type":"string"},"carrier":{"type":"string"}}},"Fact":{"type":"object","description":"One value of a spec. `kind` is there only when it changes the number's meaning.","required":["value","unit","scope"],"additionalProperties":false,"properties":{"value":{"$ref":"#/components/schemas/Value"},"unit":{"type":["string","null"],"description":"SI unit from the vocabulary, or null."},"kind":{"type":"string","enum":["typical","rated"],"description":"A typical and a rated figure are different numbers: both can be listed."},"scope":{"$ref":"#/components/schemas/Scope"}}},"Licence":{"type":"object","required":["facts","url","attribution"],"additionalProperties":false,"properties":{"facts":{"type":"string","const":"CC-BY-4.0"},"url":{"type":"string","format":"uri"},"attribution":{"type":"string","description":"The credit to show with the data."}}},"Device":{"allOf":[{"$ref":"#/components/schemas/DeviceSummary"}],"type":"object","required":["variants","regional_models","identifiers","images","facts","licence"],"unevaluatedProperties":false,"properties":{"merged_from":{"type":"string","description":"The id or slug you asked for, when it was merged into this device."},"variants":{"type":"array","items":{"type":"object","required":["id","name","axes"],"additionalProperties":false,"properties":{"id":{"type":"string","pattern":"^var_[0-9a-f]{20}$"},"name":{"type":["string","null"]},"axes":{"type":"object","additionalProperties":false,"properties":{"storage_gb":{"type":"number"},"ram_gb":{"type":"number"},"connectivity":{"type":"string"},"colour":{"type":"string"},"size_mm":{"type":"number"},"chip":{"type":"string"}}}}}},"regional_models":{"type":"array","items":{"$ref":"#/components/schemas/RegionalModel"}},"identifiers":{"type":"array","items":{"type":"object","required":["kind","value"],"additionalProperties":false,"properties":{"kind":{"type":"string","description":"model_number, order_number, apple_model_id, gtin, fcc_id, wikidata…"},"value":{"type":"string"}}}},"images":{"type":"array","items":{"$ref":"#/components/schemas/Image"},"description":"Every image, in display order."},"facts":{"type":"object","description":"Property key to its values. A property with no value yet is left out.","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/Fact"}}},"licence":{"$ref":"#/components/schemas/Licence"}}},"NextLinks":{"type":"object","required":["next"],"additionalProperties":false,"properties":{"next":{"type":["string","null"],"format":"uri"}}},"DeviceList":{"type":"object","required":["data","next_cursor","links"],"additionalProperties":false,"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DeviceSummaryStrict"}},"next_cursor":{"type":["string","null"]},"links":{"$ref":"#/components/schemas/NextLinks"}}},"IdentifyResult":{"type":"object","required":["device","regional_model"],"additionalProperties":false,"properties":{"device":{"$ref":"#/components/schemas/DeviceSummaryStrict"},"merged_from":{"type":"string","description":"The device the model number is filed under, when it was merged into `device`."},"regional_model":{"$ref":"#/components/schemas/RegionalModel"}}},"Property":{"type":"object","required":["key","label","departments","type","unit","group","description","display_order"],"additionalProperties":false,"properties":{"key":{"type":"string"},"label":{"type":"string"},"departments":{"type":"array","items":{"$ref":"#/components/schemas/Department"}},"type":{"type":"string","enum":["number","number[]","text","boolean","date"]},"unit":{"type":["string","null"]},"group":{"type":"string","enum":["display","performance","camera","battery","connectivity","build","audio","software","regulatory"]},"description":{"type":"string"},"display_order":{"type":"integer"}}},"PropertyList":{"type":"object","required":["data"],"additionalProperties":false,"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Property"}}}},"HistoryEntry":{"type":"object","required":["property","value","recorded_at","superseded_at"],"additionalProperties":false,"properties":{"property":{"type":"string"},"value":{"$ref":"#/components/schemas/Value"},"kind":{"type":"string","enum":["typical","rated"]},"recorded_at":{"type":"string","format":"date-time"},"superseded_at":{"type":["string","null"],"format":"date-time"}}},"History":{"type":"object","required":["device","data"],"additionalProperties":false,"properties":{"device":{"$ref":"#/components/schemas/DeviceSummaryStrict"},"merged_from":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/HistoryEntry"}}}},"ChangeList":{"type":"object","required":["data","next_cursor","links"],"additionalProperties":false,"properties":{"data":{"type":"array","items":{"type":"object","required":["id","slug","changed_at","links"],"additionalProperties":false,"properties":{"id":{"type":"string","pattern":"^dev_[0-9a-f]{20}$"},"slug":{"type":"string"},"changed_at":{"type":"string","format":"date-time"},"links":{"type":"object","required":["self"],"additionalProperties":false,"properties":{"self":{"type":"string","format":"uri"}}}}}},"next_cursor":{"type":["string","null"]},"links":{"$ref":"#/components/schemas/NextLinks"}}},"Health":{"type":"object","required":["ok","service","version","access"],"additionalProperties":false,"properties":{"ok":{"type":"boolean"},"service":{"type":"string","const":"atlas-api"},"version":{"type":"string","const":"v1"},"access":{"type":"string","enum":["open_preview","keys"],"description":"Whether a key is required."}}}}}}