{"id":19050911,"url":"https://github.com/tomasbasham/dominos","last_synced_at":"2026-03-11T15:13:01.288Z","repository":{"id":57423593,"uuid":"50779051","full_name":"tomasbasham/dominos","owner":"tomasbasham","description":"dominos.co.uk python library","archived":false,"fork":false,"pushed_at":"2023-05-22T21:50:33.000Z","size":58,"stargazers_count":34,"open_issues_count":6,"forks_count":84,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-09-27T19:24:51.474Z","etag":null,"topics":["dominos-pizza","pizza"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomasbasham.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.rst","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-01-31T14:45:59.000Z","updated_at":"2023-10-02T23:17:53.000Z","dependencies_parsed_at":"2022-08-29T22:51:40.633Z","dependency_job_id":null,"html_url":"https://github.com/tomasbasham/dominos","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/tomasbasham/dominos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasbasham%2Fdominos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasbasham%2Fdominos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasbasham%2Fdominos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasbasham%2Fdominos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomasbasham","download_url":"https://codeload.github.com/tomasbasham/dominos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasbasham%2Fdominos/sbom","scorecard":{"id":891994,"data":{"date":"2025-08-11","repo":{"name":"github.com/tomasbasham/dominos","commit":"59729a8bdca0ae30a84115a0e93e9b1f259faf0e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 1/17 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 14 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-24T12:13:16.337Z","repository_id":57423593,"created_at":"2025-08-24T12:13:16.337Z","updated_at":"2025-08-24T12:13:16.337Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30385347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T14:10:17.325Z","status":"ssl_error","status_checked_at":"2026-03-11T14:09:37.934Z","response_time":84,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dominos-pizza","pizza"],"created_at":"2024-11-08T23:16:39.396Z","updated_at":"2026-03-11T15:13:01.270Z","avatar_url":"https://github.com/tomasbasham.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"dominos |build| |maintainability|\n=================================\n\nDominos Pizza remains today a closed system, not officially offering a public\nAPI from which to order delicious baked pizzas. However with the invent of\ntheir multiple mobile applications and their own website having been\nreimplemented in AngularJS it was apparent these all used some undocumented\nAPI.\n\nThis package implements an abstract layer on top the Dominos Pizza (UK) API,\nreturning objects from which data can be read.\n\nInstallation\n------------\n\nPyPi\n~~~~\n\nAdd this line to your application's requirements.txt:\n\n.. code:: python\n\n    dominos\n\nAnd then execute:\n\n.. code:: bash\n\n    $ pip install -r requirements.txt\n\nOr install it yourself:\n\n.. code:: bash\n\n    $ pip install dominos\n\nGitHub\n~~~~~~\n\nInstalling the latest version from Github:\n\n.. code:: bash\n\n    $ git clone https://github.com/tomasbasham/dominos\n    $ cd dominos\n    $ python setup.py install\n\nUsage\n-----\n\nTo use this package simply instantiate a ``Client`` object:\n\n.. code:: python\n\n    from dominos import Client, VARIANT\n\n    api = Client()\n    store = api.get_nearest_store('AB12 000')\n    print(store.name)\n\nThis returns the nearest store for the supplied postcode and prints the name\nreturned from the API. Additionally it sets the necessary ``XSRF-TOKEN``\nrequired to perform some actions later in the process. These include adding an\nitem to the basket and processing payments.\n\nTo grab the store menu:\n\n.. code:: python\n\n    menu = api.get_menu(store)\n    potato_wedges = menu.get_product_by_name('Potato Wedges')\n    print(potato_wedges.price)\n\n**Note**: Never call more than one api function in the same line! This causes\nissues with the API that may result in data being incorrectly processed.\n\n.. code:: python\n\n    api.add_item_to_basket(item=menu.get_item_by_name(\"Original Cheese \u0026 Tomato\"), variant=VARIANTS.MEDIUM)\n\nThis code calls two api functions - ``api.add_item_to_basket`` and\n``menu.get_item_by_name``. Instead it is recommended to store intermediate\nvalues into separate variables:\n\n.. code:: python\n\n    potato_wedges = menu.get_item_by_name('Original Cheese \u0026 Tomato')\n    api.add_item_to_basket(item=potato_wedges, vairant=VARIANT.PERSONAL)\n\nFull Usage Example\n~~~~~~~~~~~~~~~~~~\n\nHaving instantiated an API ``Client`` a ``Store`` is needed from which to\nretrieve the full list of available items. This can be obtained through\n``get_nearest_store``:\n\n.. code:: python\n\n    from dominos import Client, FULFILMENT_METHOD, VARIANT\n\n    api = Client(session)\n    store = api.get_nearest_store('AB12 000')\n\nThe nearest store will be returned if and only if one can be found for the\ngiven postcode. It is also possible to pass a more generic search term to\n``get_nearest_store``, i.e. Cardiff, that will return only stores from which\none may collect. In this instance ``get_nearest_store`` will return ``None``.\n\nIf instead it is more appropriate to return a list of stores use ``get_stores``\nwhich also takes a generic search term and is indexed numerically.\n\nAt this point the delivery system should be initialised for the fulfilment\nmethod to be processed. This determines if the order will be for collection or\ndelivery.\n\n.. code:: python\n\n    api.set_delivery_system(store, 'AB12 000', fulfilment_method=FULFILMENT_METHOD.COLLECTION)\n\nIn addition to ``COLLECTION`` this method will also accept ``DELIVERY``\nindicating the order should be delivered. The default value for this method is\nfor delivery and may be omitted.\n\nNow that a ``Store`` object has been obtained through either of the above\nmethods, its menu may be retrieved with ``get_menu``, taking the store as an\nargument.\n\n.. code:: python\n\n    menu = api.get_menu(store)\n\nThis will return a ``Menu`` object that can be search by item name or\nalternatively indexed by item ID. The menu item name must be spelled correctly\nbut is not cases-sensitive. If the item is found io the menu then an ``Item``\nobject will be returned which may be added to the basket:\n\n.. code:: python\n\n    pizza = menu.get_product_by_name('Original Cheese \u0026 Tomato')\n    api.add_item_to_basket(pizza, variant=VARIANT.LARGE)\n\nThere are four available variants: ``PERSONAL``, ``SMALL``, ``MEDIUM`` and\n``LARGE``. Note that the variant is ignored if adding a side since it must\nalways be ``PERSONAL``.\n\nBy defaut ``add_item_to_basket`` will add only 1 item to the basket at a time\nbut this may be changed by passing a ``quantity`` argument.\n\nAt this time, the Dominos library does not support order placement, although it\nshould be entirely possible to accept orders that are marked for cash upon\ndelivery (not all stores allow for this). For now the basket information can be\nprinted:\n\n.. code:: python\n\n    basket = api.get_basket()\n    print(basket.items)\n\nLicense\n-------\n\nThis project is licensed under the `MIT License \u003cLICENSE.txt\u003e`_.\n\n.. |build| image:: https://travis-ci.com/tomasbasham/dominos.svg?branch=master\n    :target: https://travis-ci.com/tomasbasham/dominos\n\n.. |maintainability| image:: https://api.codeclimate.com/v1/badges/77198135c362816e5d78/maintainability\n    :target: https://codeclimate.com/github/tomasbasham/dominos/maintainability\n    :alt: Maintainability\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasbasham%2Fdominos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomasbasham%2Fdominos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasbasham%2Fdominos/lists"}