REST API reference¤
Info
A public version is available at https://cp2k-basis.pierrebeaujean.net/api/.
Preamble¤
Request¤
This API can be used to retrieve two types (<type>) of data, either basis sets (basis) or pseudopotentials (pseudopotentials).
Each of them has a name (<name>).
Options are added as query string: /api/example?option1=value&option2=value.
All routes are addressed by GET requests.
On the elements option¤
Every time the option elements can be used,
- you can use a list of comma separated atomic symbols, e.g., 
C,H,N,O, - but also ranges, e.g., 
H,C-O, and - Z numbers can be used instead of symbols, e,g., 
H,6-8. 
Elements are limited to Z ≤ 103, i.e., hydrogen to Lawrencium. If you want to perform calculations outside this range, you probably have other problems on your plate than finding a basis set ;)
Response format¤
The response is in JSON, and always contains two main fields:
{
  "query": {
    "type": "TYPE",
    (...)
  },
  "result": {
    (...)
  }
}
query contains the request, to which result is the answer.
In the following, fields will be detailed using the syntax for object attributes in JS, e.g., query.type. 
Routes¤
/api/data¤
Get, for basis sets and pseudopotentials, which elements are defined, and for each element, which basis set/pseudopotentials are defined. There is no option.
Output:
| Field | Type | Description | 
|---|---|---|
query.type | 
string | Always ALL | 
result.basis_sets | 
dictionary | Contains three fields: build_date, which give the date at which the library was built, elements, which lists elements available for a given basis set, and tags, which lists the tags for each basis set. | 
result.pseudopotentials | 
dictionary | Contains three fields: build_date, which give the date at which the library was built, elements, which lists elements available for a given pseudopotential, and tags, which lists the tags for each pseudopotential. | 
curl https://cp2k-basis.pierrebeaujean.net/api/data
{
  "query": {
    "type": "ALL"
  },
  "result": {
    "basis_sets": {
      "build_date": "2022-12-16T18:09:03.513403",
      "elements": {
        "DZVP-MOLOPT-GTH": [
          "C",
          "H",
          (...)
        ],
        (...)
      },
      "tags": {
        "DZVP-MOLOPT-GTH": [
          "molopt",
          "gth"
        ],
        (...)
      }
    },
    "pseudopotentials": {
      "build_date": "2022-12-16T18:09:03.513403",
      "elements": {
        "GTH-BLYP": [
          "B",
          "Be", 
          (...)
        ]
      },
      "tags": {
          (...)
      }
    }
  }
}
/api/names¤
List all available basis set and pseudopotential names available, eventually for a set of elements.
Options:
| Option | Argument | Description | 
|---|---|---|
elements | 
String | Restrict the output to a subset of elements. | 
bs_name | 
String | Restrict the output to a subset of basis sets containing the given name (case insensitive). | 
bs_tag | 
String | Restrict the output to a subset of basis sets having the given tag. | 
pp_name | 
String | Restrict the output to a subset of pseudopotentials containing the given name (case insensitive). | 
pp_tag | 
String | Restrict the output to a subset of pseudopotentials having the given tag. | 
Available tags are listed there.
Output:
| Field | Type | Description | 
|---|---|---|
query.type | 
string | Always ALL | 
query.elements | 
list of string | Value of the elements option, if provided | 
result.basis_sets | 
list of string | List of basis set names available | 
result.pseudopotentials | 
list of string | List of pseudopotential names available | 
curl 'https://cp2k-basis.pierrebeaujean.net/api/names?elements=Ti&pp_name=PBE&bs_tag=SR'
{
  "query": {
    "elements": [
      "Ti"
    ],
    "type": "ALL"
  },
  "result": {
    "basis_sets": [
      "DZVP-MOLOPT-SR-GTH",
      "SZV-MOLOPT-SR-GTH",
      "TZV2P-MOLOPT-SR-GTH",
      "TZVP-MOLOPT-SR-GTH"
    ],
    "pseudopotentials": [
      "GTH-PBE",
      "GTH-PBE0"
    ]
  }
}
/api/<type>/<name>/data¤
Obtain data in the CP2K format.
Options:
| Option | Argument | Description | 
|---|---|---|
elements | 
String | Restrict the output to a subset of elements. If some elements are not defined for this basis set/pseudopotential, a 404 is raised. | 
header | 
Boolean | Add an header to result.data (default is true) | 
Output:
| Field | Type | Description | 
|---|---|---|
query.type | 
string | BASIS_SET or PSEUDOPOTENTIAL | 
query.name | 
string | The name you requested | 
query.elements | 
list of string | Value of the elements option, if provided | 
result.data | 
string | The resulting basis set or pseudopotential, in CP2K format | 
result.elements | 
list of string | Elements for which there is data (matches the option elements if set) | 
result.variants | 
dictionary | For each element, dictionary containing all variants and the corresponding name to be used for such variant | 
result.metadata | 
dictionary | Dictionary of metadata about this pseudopotential/basis set. See below for content. | 
curl https://cp2k-basis.pierrebeaujean.net/api/basis/SZV-MOLOPT-SR-GTH/data?elements=Rh
{
  "query": {
    "elements": [
      "Rh"
    ],
    "name": "SZV-MOLOPT-SR-GTH",
    "type": "BASIS_SET"
  },
  "result": {
    "data": "# URL: http://127.0.0.1:5000/api/basis/SZV-MOLOPT-SR-GTH/data?elements=Rh\n# BUILD: 16/12/2022 @ 19:38\n# FETCHED: 19/12/2022 @ 14:36\n# ---\n# Rh [12s6p6d|2s1p1d]\n# SOURCE: https://github.com/cp2k/cp2k/raw/786bc82ff9ded3e1f761cba6d8e25c3c9fe19bb1/data/BASIS_MOLOPT#L1244\nRh  SZV-MOLOPT-SR-GTH SZV-MOLOPT-SR-GTH-q17\n1\n2 0 2 6 2 1 1\n  3.157817444361  0.760084070950  0.239207051701 -0.336193318541 -0.176446839307\n  2.683291075925 -0.255650224037 -0.091067207483  0.373953992584  0.261743358411\n  1.140786095845 -1.025626679377 -0.520689753906  0.300684698668  0.174717739794\n  0.492081007160 -0.234415477939 -0.274976137245  0.141457244144  0.188746290944\n  0.192543904978  0.046321838032  0.534686741279  0.007751787318  0.112894420897\n  0.066486620394  0.135748106274  0.896548625743  0.000117823467  0.021703317232\n# Rh [6s6p6d|1s1p1d]\n# SOURCE: https://github.com/cp2k/cp2k/raw/786bc82ff9ded3e1f761cba6d8e25c3c9fe19bb1/data/BASIS_MOLOPT#L1262\nRh  SZV-MOLOPT-SR-GTH-q9\n1\n2 0 2 6 1 1 1\n  3.902721449032  0.016652865171 -0.008699428728 -0.112417659954\n  1.999830271997 -0.133395648426  0.046572987907  0.348017742874\n  0.879887627395  0.373099930807 -0.153463590375  0.381775351795\n  0.363794442257  0.298777744612 -0.052550610965  0.335875585916\n  0.140096726529 -0.924610879301  0.949493319446  0.146687236468\n  0.042562039477 -0.455102584336  0.423881871378  0.013082339937\n",
    "elements": [
      "Rh"
    ],
    "metadata": {
      "description": "A single zeta valence MOLOPT basis set, for solids (short-range) and GTH pseudopotentials",
      "tags": [
        "MOLOPT",
        "SR",
        "GTH"
      ],
      "references": [
        "https://dx.doi.org/10.1063/1.2770708",
        "https://doi.org/10.1039/B508541A",
        "https://github.com/cp2k/cp2k-data"
      ]
    },
    "variants": {
      "Rh": {
        "q17": "SZV-MOLOPT-SR-GTH-q17",
        "q9": "SZV-MOLOPT-SR-GTH-q9"
      }
    }
  }
}
/api/<type>/<name>/metadata¤
Obtain metadata about a basis set or pseudopotential. There is no option.
Output:
| Field | Type | Description | 
|---|---|---|
query.type | 
string | BASIS_SET or PSEUDOPOTENTIAL | 
query.name | 
string | The name you requested | 
result.elements | 
list of string | Elements for which the basis set/pseudopotential are defined | 
result.description | 
string | Small description. | 
result.references | 
list of string | List of URL to articles or repositories | 
result.tags | 
list of string | Kind of the basis set/pseudopotential | 
curl https://cp2k-basis.pierrebeaujean.net/api/pseudopotentials/GTH-BLYP/metadata
{
  "query": {
    "name": "GTH-BLYP",
    "type": "PSEUDOPOTENTIAL"
  },
  "result": {
    "description": "GTH pseudopotentials, optimized for BLYP.",
    "elements": [
      "Ag",
      "Al",
      (...)
    ],
    "tags": [
      "GTH"
    ],
    "references": [
      "https://dx.doi.org/10.1103/PhysRevB.54.1703",
      "https://dx.doi.org/10.1103/PhysRevB.58.3641",
      "https://dx.doi.org/10.1007/s00214-005-0655-y",
      "https://github.com/cp2k/cp2k-data"
    ]
  }
}