{"id":16499106,"url":"https://github.com/joshday/firestore.jl","last_synced_at":"2025-10-28T00:30:52.180Z","repository":{"id":53451916,"uuid":"352744355","full_name":"joshday/Firestore.jl","owner":"joshday","description":"Read/write Google Firestore documents from Julia ","archived":false,"fork":false,"pushed_at":"2021-04-01T17:29:12.000Z","size":27,"stargazers_count":12,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-01T09:31:54.383Z","etag":null,"topics":["api-client","firestore","julia"],"latest_commit_sha":null,"homepage":"","language":"Julia","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/joshday.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-29T18:25:07.000Z","updated_at":"2023-01-28T12:52:23.000Z","dependencies_parsed_at":"2022-09-09T03:11:21.802Z","dependency_job_id":null,"html_url":"https://github.com/joshday/Firestore.jl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshday%2FFirestore.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshday%2FFirestore.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshday%2FFirestore.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshday%2FFirestore.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joshday","download_url":"https://codeload.github.com/joshday/Firestore.jl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238574738,"owners_count":19494723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["api-client","firestore","julia"],"created_at":"2024-10-11T14:51:12.346Z","updated_at":"2025-10-28T00:30:46.876Z","avatar_url":"https://github.com/joshday.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Firestore.jl\n\nThis package provides utilities for reading \u0026 writing Google Firestore documents with Julia using the REST API.\n\nThis package is unofficial and not sponsored or supported by Google.\n\n## Setup\n\n1. Create a new Firebase project at https://firebase.google.com.\n2. Create a Firestore Database in your project.\n3. In your `.julia/startup/config.jl` file, add `ENV[\"FIRESTORE_PROJECT\"] = \"\u003cmy_project_id\u003e\"`.\n  - Alternatively, use `Firestore.set_project!(::String)`.\n\n## High-Level Usage \n\nFirestore supports the following datatypes (in Julia-speak):\n\n- `Bool`\n- `Int64`\n- `Float64`\n- `Nothing`\n- `String`\n- `DateTime`\n- `Dict{String, SupportedType}`\n- `Vector{SupportedType}`\n\nFirestore.jl will convert your data into the appropriate type if it is able to do so (e.g. `OrderedDict` -\u003e `Dict`).\n\n### Write\n\n```julia\nusing Firestore\nusing Dates\n\ndoc = Dict(\n    :x1 =\u003e 1,\n    :x2 =\u003e \"a string\",\n    :x3 =\u003e Dict(:sub1 =\u003e 1, :sub2 =\u003e [1, \"two\"]),\n    :x4 =\u003e false,\n    :x5 =\u003e nothing,\n    :now =\u003e now(),\n    :today =\u003e today(),\n    :x7 =\u003e [1, \"two\", Dict(\"three\" =\u003e 3)]\n)\n\n# `patch` will overwrite an existing doc whereas `createDocument` will not\nFirestore.patch(\"test_collection/test_doc\", doc)\n```\n\n### Read \n\n```julia\nFirestore.get(\"test_collection/test_doc\")\n```\n\n```\nDict{Symbol, Any} with 8 entries:\n  :today =\u003e DateTime(\"2021-03-29T00:00:00\")\n  :x2    =\u003e \"a string\"\n  :x5    =\u003e nothing\n  :x7    =\u003e Any[1, \"two\", Dict(:three=\u003e3)]\n  :x3    =\u003e Dict{Symbol, Any}(:sub2=\u003eAny[1, \"two\"], :sub1=\u003e1)\n  :x4    =\u003e false\n  :now   =\u003e DateTime(\"2021-03-29T14:21:17.409\")\n  :x1    =\u003e 1\n```\n\n## Supported Operations\n\nSee https://firebase.google.com/docs/firestore/reference/rest#rest-resource:-v1beta1.projects.databases.documents.\n\n- `createDocument`\n- `delete`\n- `get`\n- `patch`\n\n## Authentication\n\n- NOTE: Currently only email/password-based auth is supported.\n\n### Authenticating Only Yourself\n\n1. Go to your Firebase \"Authentication\" page:\n  - Under \"Sign-In Method\", enable the \"Email/Password\" provider.\n  - Under \"Users\", add your email and password.\n  - Add `ENV[\"FIRESTORE_EMAIL\"] = \u003cyour email\u003e` and `ENV[\"FIRESTORE_PASSWORD\"] = \u003cyour pw\u003e` to your `~/.julia/startup/config.jl` file.\n2. Go to your Project Settings (Click the cog next to \"Project Overview\") page:\n  - Add `ENV[\"FIRESTORE_API_KEY\"] = \u003cWeb API Key\u003e` to your `~/.julia/startup/config.jl`\n3. Go to your Firebase \"Firestore Database\" page:\n  - Copy/paste this to your \"Rules\":\n  ```\n  // Allow read/write access on all documents to any user signed in to the application\n  service cloud.firestore {\n    match /databases/{database}/documents {\n      match /{document=**} {\n        allow read, write: if request.auth != null;\n      }\n    }\n  }\n  ```\n\n4. Call `get_token!()` and now your requests are authenticated!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshday%2Ffirestore.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoshday%2Ffirestore.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshday%2Ffirestore.jl/lists"}