{"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 sourced reference catalog of consumer electronics.","description":"Every device, every variant, every fact with its source. Each fact carries its value, unit, kind\n(claimed, rated, typical, measured, regulatory, derived, rumoured), confidence, the source it came from,\nthe source's own words and the date we read it. A value nobody has sourced yet comes back as `null`\nand is listed in `pending`: 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 facts and sources."},{"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/devices/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 facts. `facts` has a key for every property\nof the device's department, in display order. Each is a list, because kinds never compete (a rated and a\ntypical battery capacity are both shown) and scoped values sit side by side; or `null` when nothing is\nsourced yet, in which case the key is also in `pending`.\n\nEvery fact carries its value, unit, kind, confidence, source id, quote and licence. Add `expand=sources` for\nthe full source records. A device that was merged into another answers with that device, and says so in\n`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"]},{"name":"expand","in":"query","description":"`sources` adds the full source records; `all_values` adds values that are not shown (rank `normal` or\n`deprecated`), with the reason.\n","style":"form","explode":false,"schema":{"type":"array","items":{"type":"string","enum":["sources","all_values"]}},"example":["sources"]}],"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/devices/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","confidence":"high","rank":"preferred","rank_reason":null,"scope":{},"subject":"dev_3f9a1c0b7e2d4a6f8c10","source":"src_4e5f6a7b8c9d0e1f2a30","quote":"Battery Capacity (mAh, Typical) 5000","retrieved_at":"2026-10-18T09:12:40.000Z","archived_url":null,"valid_from":null,"valid_to":null,"recorded_at":"2026-10-18T09:13:02.551Z","reviewed":true,"licence":"CC-BY-4.0"}],"peak_nits":null},"pending":["peak_nits"],"sources":[{"id":"src_4e5f6a7b8c9d0e1f2a30","kind":"maker_page","publisher":"Samsung","url":"https://www.samsung.com/ca/smartphones/galaxy-s25-ultra/specs/","tier":2}],"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":"Every fact recorded or superseded on the device, its variants and its regional models, newest first, with\nthe changeset that wrote it. Capped at the newest 1,000 entries.\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/devices/galaxy-s25-ultra"}},"data":[{"property":"weight_g","value":218,"kind":"claimed","rank":"preferred","recorded_at":"2026-10-18T09:13:02.551Z","superseded_at":null,"changeset":"cs_0a1b2c3d4e5f6a7b8c90","comment":"Samsung Canada spec page, October 2026"}]}}}},"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/devices/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 with where it came from. Kinds never compete; one value per kind and scope is shown.","required":["value","unit","kind","confidence","rank","rank_reason","scope","subject","source","quote","retrieved_at","archived_url","valid_from","valid_to","recorded_at","reviewed","licence"],"additionalProperties":false,"properties":{"value":{"$ref":"#/components/schemas/Value"},"unit":{"type":["string","null"],"description":"SI unit from the vocabulary, or null."},"kind":{"type":"string","enum":["claimed","rated","typical","measured","regulatory","derived","rumoured"]},"confidence":{"type":"string","enum":["high","medium","low"]},"rank":{"type":"string","enum":["preferred","normal","deprecated"],"description":"`preferred` is the value shown; the others appear only with `expand=all_values`."},"rank_reason":{"type":["string","null"]},"scope":{"$ref":"#/components/schemas/Scope"},"subject":{"type":"string","description":"The device, variant (`var_…`) or regional model (`rgm_…`) the value is about."},"source":{"type":"string","pattern":"^src_[0-9a-f]{20}$","description":"The source's id; `expand=sources` for the record."},"quote":{"type":["string","null"],"description":"The source's own words. Null only for open data and partner records."},"retrieved_at":{"type":["string","null"],"format":"date-time","description":"When we read the source."},"archived_url":{"type":["string","null"],"format":"uri","description":"The Wayback Machine copy of the source as read."},"valid_from":{"$ref":"#/components/schemas/Date"},"valid_to":{"$ref":"#/components/schemas/Date"},"recorded_at":{"type":"string","format":"date-time","description":"When Atlas recorded the value."},"reviewed":{"type":"boolean","description":"An editor checked it."},"licence":{"type":"string","const":"CC-BY-4.0"}}},"Source":{"type":"object","required":["id","kind","publisher","url","tier"],"additionalProperties":false,"properties":{"id":{"type":"string","pattern":"^src_[0-9a-f]{20}$"},"kind":{"type":"string","enum":["regulator","maker_page","maker_press","maker_store","open_data","partner","lab","press","retailer","community"]},"publisher":{"type":"string"},"url":{"type":"string","format":"uri"},"tier":{"type":"integer","minimum":1,"maximum":7,"description":"Precedence when sources disagree: 1 (a regulator) wins."}}},"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","pending","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, or null when nothing is sourced yet.","additionalProperties":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/Fact"}},{"type":"null"}]}},"pending":{"type":"array","items":{"type":"string"},"description":"Properties with no sourced value yet."},"sources":{"type":"array","items":{"$ref":"#/components/schemas/Source"},"description":"With `expand=sources`."},"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","kind","rank","recorded_at","superseded_at","changeset","comment"],"additionalProperties":false,"properties":{"property":{"type":"string"},"value":{"$ref":"#/components/schemas/Value"},"kind":{"type":"string","enum":["claimed","rated","typical","measured","regulatory","derived","rumoured"]},"rank":{"type":"string","enum":["preferred","normal","deprecated"]},"recorded_at":{"type":"string","format":"date-time"},"superseded_at":{"type":["string","null"],"format":"date-time"},"changeset":{"type":"string","pattern":"^cs_[0-9a-f]{20}$"},"comment":{"type":"string","description":"Why the changeset was made."}}},"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."}}}}}}