{"id":16341755,"url":"https://github.com/adimit/xjira","last_synced_at":"2026-01-26T23:17:52.544Z","repository":{"id":66452575,"uuid":"393659551","full_name":"adimit/xjira","owner":"adimit","description":"A minimal scratch-your-own-itch Jira-integration for org-mode","archived":false,"fork":false,"pushed_at":"2025-08-05T11:32:21.000Z","size":48,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-24T21:48:56.818Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adimit.png","metadata":{"files":{"readme":"README.org","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-08-07T11:04:49.000Z","updated_at":"2025-08-05T11:32:26.000Z","dependencies_parsed_at":"2024-02-09T09:43:35.350Z","dependency_job_id":"ecb37b7f-831d-4101-9c8d-b9ec0f3c4625","html_url":"https://github.com/adimit/xjira","commit_stats":{"total_commits":26,"total_committers":1,"mean_commits":26.0,"dds":0.0,"last_synced_commit":"88d287c88263c276a8d8a534df42a8b6a8def5eb"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adimit/xjira","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adimit%2Fxjira","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adimit%2Fxjira/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adimit%2Fxjira/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adimit%2Fxjira/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adimit","download_url":"https://codeload.github.com/adimit/xjira/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adimit%2Fxjira/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28791166,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T21:49:50.245Z","status":"ssl_error","status_checked_at":"2026-01-26T21:48:29.455Z","response_time":59,"last_error":"SSL_read: 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":[],"created_at":"2024-10-11T00:00:20.867Z","updated_at":"2026-01-26T23:17:52.160Z","avatar_url":"https://github.com/adimit.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+TITLE: XJIRA\n\nA small Emacs package that allows you to define an entry in =org-capture-templates= that will fetch a Jira issue's information.\n\nThis is very much a scratch-my-own-itch package and provided as-is.\nIt depends on =let-alist= and Emacs ≥ 27.1, built with =libjansson=\nsupport.\n\n* Setup\n\nHere's an example capture template:\n\n#+begin_src emacs-lisp\n  (customize-set-variable\n   'org-capture-templates\n   `((\"c\" \"Get Issue from Jira\" entry)\n     (file+regexp your-org-file some-regexp)\n     ,(string-join\n       '(\"* TODO %(xjira-org-capture-issue \\\"PROJECT\\\") %(xjira-get 'issue) %(xjira-get 'title)\"\n         \"SCHEDULED: %t\"\n         \":PROPERTIES:\"\n         \":REFERENCE: %(eval xjira-host)/browse/%(xjira-get 'issue)\"\n         \":Reporter: %(xjira-get 'reporter)\"\n         \":END:\"\n         \"%?\"\n         \"%(xjira-get 'description)\")\n       \"\\n\")))\n#+end_src\n\n=xjira-org-capture-issue= asks you for an issue number and then fetches the required information from Jira via REST. You can then use  =xjira-get= to retrieve the contents of the issue.\n\nBe sure to substitute =PROJECT= for your company's chosen cryptic Jira project shorthand. If you don't pass a string to =xjira-org-capture-issue=, you will be prompted for the project every time you capture something.\n\n* Authentication\n\nJira supports basic auth using the =username:password= scheme. Jira\nCloud allows you to use the same basic auth, but you need to use a\ntoken instead of your password.  Token based auth will work with SAML\nand 2FA enabled. Create a Jira Cloud token [[https://id.atlassian.com/manage-profile/security/api-tokens][here]].\n\nTo set =xjira-auth=, use\n\n#+begin_src emacs-lisp\n  (let ((username \"your-jira-username\")\n        (password \"your password or token\"))\n   (custom-set-variables\n    '(xjira-auth (base64-encode-string (format \"%s:%s\" username password) 'no-line-break))))\n#+end_src\n\nJira Cloud with SAML or 2FA will only work with tokens, not with\npasswords.  Be aware that base64 is just obfuscated plain text, so\neverybody who has this string has your credentials.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadimit%2Fxjira","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadimit%2Fxjira","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadimit%2Fxjira/lists"}