API Dokumentation

GET /external-apis

Versioning

This route is provided in version 1.0.0

Authentication

Clients must supply the following data
A JSON Web Token-based API key

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    - `application/json`
  • Example (application/json):

{}
  • Example (application/json):
{
    "23064b70-f28a-8b2a-a473-0435d191564a": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [],
        "base-url": "https://example.invalid"
    }
}
  • Example (application/json):
{
    "23064b70-f28a-8b2a-a473-0435d191564a": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [],
        "base-url": "https://example.invalid"
    },
    "c51cab92-2456-12a5-ab99-edd005f334d1": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [
            {
                "use": "enc",
                "kid": "sample RSA",
                "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
                "e": "AQAB",
                "kty": "RSA"
            }
        ],
        "base-url": "https://example.invalid"
    }
}
  • Example (application/json):
{
    "23064b70-f28a-8b2a-a473-0435d191564a": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [],
        "base-url": "https://example.invalid"
    },
    "6adecb8c-bf20-3fa9-32bc-3b638b6a081f": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [
            {
                "use": "enc",
                "kid": "sample RSA",
                "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
                "e": "AQAB",
                "kty": "RSA"
            }
        ],
        "base-url": "https://example.invalid"
    },
    "c51cab92-2456-12a5-ab99-edd005f334d1": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [
            {
                "use": "enc",
                "kid": "sample RSA",
                "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
                "e": "AQAB",
                "kty": "RSA"
            }
        ],
        "base-url": "https://example.invalid"
    }
}
  • Example (application/json):
{
    "23064b70-f28a-8b2a-a473-0435d191564a": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [],
        "base-url": "https://example.invalid"
    },
    "424058be-f557-6e15-3768-2b7dc5393e3e": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1",
                "Format 2"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [],
        "base-url": "https://example.invalid"
    },
    "6adecb8c-bf20-3fa9-32bc-3b638b6a081f": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [
            {
                "use": "enc",
                "kid": "sample RSA",
                "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
                "e": "AQAB",
                "kty": "RSA"
            }
        ],
        "base-url": "https://example.invalid"
    },
    "c51cab92-2456-12a5-ab99-edd005f334d1": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [
            {
                "use": "enc",
                "kid": "sample RSA",
                "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
                "e": "AQAB",
                "kty": "RSA"
            }
        ],
        "base-url": "https://example.invalid"
    }
}

POST /external-apis

Bearer restrictions

The behaviour of this route dependes on the restrictions stored for it in the bearer token used for authorization

Bearer token

The behaviour of this route dependes on the exact bearer token used for authorization

Versioning

This route is provided in version 1.0.0

Authentication

Clients must supply the following data
A JSON Web Token-based API key

Request:

  • Supported content types are:

    - `application/json`
  • Symmetric key, Without path (application/json):

{
    "config": {
        "formats": [
            "Format 1"
        ],
        "type": "gradelist-format"
    },
    "public-keys": {
        "keys": [
            {
                "use": "enc",
                "k": "n0RTZ0VtVhk",
                "kid": "sample",
                "kty": "oct"
            }
        ]
    },
    "base-url": "https://example.invalid"
}
  • Symmetric key, Without path (application/json):
{
    "config": {
        "formats": [
            "Format 1",
            "Format 2"
        ],
        "type": "gradelist-format"
    },
    "public-keys": {
        "keys": [
            {
                "use": "enc",
                "k": "n0RTZ0VtVhk",
                "kid": "sample",
                "kty": "oct"
            }
        ]
    },
    "base-url": "https://example.invalid"
}
  • Asymmetric keyset, Without path (application/json):
{
    "config": {
        "formats": [
            "Format 1"
        ],
        "type": "gradelist-format"
    },
    "public-keys": {
        "keys": [
            {
                "use": "enc",
                "kid": "sample RSA",
                "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
                "e": "AQAB",
                "kty": "RSA"
            },
            {
                "qi": "rHI7D1IRPy0JOYc17xMy5inR1l0TsugjP9PgOTBQBNv-ygrGz5SZOSkHg2sXm6qA_QmLrbUhp7BHSiLBr-A9Zw",
                "p": "30RTZ0VtVhkxSkKj2oawAZR6_lmcK6mceaY0fjsiblqIVOj_zKILFzAwtPrCsxZ5wCWwrJSNiAvuFx0AmuwaDQ",
                "use": "enc",
                "kid": "sample RSA",
                "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
                "q": "_WYWkB2soOIaeuPYAvfwm-iTV9JWbepHvwbnxskonruCJP4bIikbokdPE--hvLHK5eBd-4Do8i4SGRqa3X4KWQ",
                "d": "vz_ePlewgiofprbpAySBwb--5tPsblw7e_chqV_d5zaZ_ujEbcg7oX4XcsZvWsf4lc1fKvkOsZkU1OQJe6xTi-MqIPUx2YUOUifgEYMcZWldI_YJPY7zZ6gw7hYBB91Pt9Am8enkJ3_lK_wyJScBX_vVpJNpCIqy_anXNmyYVWE",
                "dp": "mMV7_HI5OmzKmXG4BNOco7gh4OEYR5grheIAkU-NY8129ALq5e8Lf7Zt3aioiTqb3KrtlWmg3rKrHA2wWFGuEQ",
                "e": "AQAB",
                "dq": "Pnaa2z2lXyc9NcvSZLDvq88B-yULTx7wPqOaIMNXcwFvzGSjFaGigTcoxBZO_S-qf032fNfDFGfM6ElJoY2_SQ",
                "kty": "RSA"
            }
        ]
    },
    "base-url": "https://example.invalid"
}
  • Symmetric key, With path (application/json):
{
    "config": {
        "formats": [
            "Format 1"
        ],
        "type": "gradelist-format"
    },
    "public-keys": {
        "keys": [
            {
                "use": "enc",
                "k": "n0RTZ0VtVhk",
                "kid": "sample",
                "kty": "oct"
            }
        ]
    },
    "base-url": "https://example.invalid/api"
}
  • Asymmetric keyset, Without path (application/json):
{
    "config": {
        "formats": [
            "Format 1",
            "Format 2"
        ],
        "type": "gradelist-format"
    },
    "public-keys": {
        "keys": [
            {
                "use": "enc",
                "kid": "sample RSA",
                "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
                "e": "AQAB",
                "kty": "RSA"
            },
            {
                "qi": "rHI7D1IRPy0JOYc17xMy5inR1l0TsugjP9PgOTBQBNv-ygrGz5SZOSkHg2sXm6qA_QmLrbUhp7BHSiLBr-A9Zw",
                "p": "30RTZ0VtVhkxSkKj2oawAZR6_lmcK6mceaY0fjsiblqIVOj_zKILFzAwtPrCsxZ5wCWwrJSNiAvuFx0AmuwaDQ",
                "use": "enc",
                "kid": "sample RSA",
                "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
                "q": "_WYWkB2soOIaeuPYAvfwm-iTV9JWbepHvwbnxskonruCJP4bIikbokdPE--hvLHK5eBd-4Do8i4SGRqa3X4KWQ",
                "d": "vz_ePlewgiofprbpAySBwb--5tPsblw7e_chqV_d5zaZ_ujEbcg7oX4XcsZvWsf4lc1fKvkOsZkU1OQJe6xTi-MqIPUx2YUOUifgEYMcZWldI_YJPY7zZ6gw7hYBB91Pt9Am8enkJ3_lK_wyJScBX_vVpJNpCIqy_anXNmyYVWE",
                "dp": "mMV7_HI5OmzKmXG4BNOco7gh4OEYR5grheIAkU-NY8129ALq5e8Lf7Zt3aioiTqb3KrtlWmg3rKrHA2wWFGuEQ",
                "e": "AQAB",
                "dq": "Pnaa2z2lXyc9NcvSZLDvq88B-yULTx7wPqOaIMNXcwFvzGSjFaGigTcoxBZO_S-qf032fNfDFGfM6ElJoY2_SQ",
                "kty": "RSA"
            }
        ]
    },
    "base-url": "https://example.invalid"
}

Response:

{
    "id": "23064b70-f28a-8b2a-a473-0435d191564a",
    "info": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [],
        "base-url": "https://example.invalid"
    }
}
  • Example (application/json, application/json):
{
    "id": "23064b70-f28a-8b2a-a473-0435d191564a",
    "info": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [
            {
                "use": "enc",
                "kid": "sample RSA",
                "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
                "e": "AQAB",
                "kty": "RSA"
            }
        ],
        "base-url": "https://example.invalid"
    }
}
  • Example (application/json):
{
    "id": "23064b70-f28a-8b2a-a473-0435d191564a",
    "info": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1",
                "Format 2"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [],
        "base-url": "https://example.invalid"
    }
}
  • Example (application/json):
{
    "id": "23064b70-f28a-8b2a-a473-0435d191564a",
    "info": {
        "token-authority": [],
        "config": {
            "formats": [
                "Format 1",
                "Format 2"
            ],
            "type": "gradelist-format"
        },
        "last-alive": "2023-07-31T23:37:55.150705244Z",
        "token-issued": "2023-07-31T23:37:55.150705244Z",
        "token-expires-at": null,
        "token-starts-at": null,
        "public-keys": [
            {
                "use": "enc",
                "kid": "sample RSA",
                "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
                "e": "AQAB",
                "kty": "RSA"
            }
        ],
        "base-url": "https://example.invalid"
    }
}

DELETE /external-apis/:external-api

Versioning

This route is provided in version 1.0.0

Authentication

Clients must supply the following data
A JSON Web Token-based API key

Captures:

  • external-api: Internal id of the registered external api

Response:

  • Status code 204

  • Headers: []

  • No response body

GET /external-apis/:external-api

Versioning

This route is provided in version 1.0.0

Authentication

Clients must supply the following data
A JSON Web Token-based API key

Captures:

  • external-api: Internal id of the registered external api

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    - `application/json`
  • Example (application/json):

{
    "token-authority": [],
    "config": {
        "formats": [
            "Format 1"
        ],
        "type": "gradelist-format"
    },
    "last-alive": "2023-07-31T23:37:55.150705244Z",
    "token-issued": "2023-07-31T23:37:55.150705244Z",
    "token-expires-at": null,
    "token-starts-at": null,
    "public-keys": [],
    "base-url": "https://example.invalid"
}
  • Example (application/json, application/json):
{
    "token-authority": [],
    "config": {
        "formats": [
            "Format 1"
        ],
        "type": "gradelist-format"
    },
    "last-alive": "2023-07-31T23:37:55.150705244Z",
    "token-issued": "2023-07-31T23:37:55.150705244Z",
    "token-expires-at": null,
    "token-starts-at": null,
    "public-keys": [
        {
            "use": "enc",
            "kid": "sample RSA",
            "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
            "e": "AQAB",
            "kty": "RSA"
        }
    ],
    "base-url": "https://example.invalid"
}
  • Example (application/json):
{
    "token-authority": [],
    "config": {
        "formats": [
            "Format 1",
            "Format 2"
        ],
        "type": "gradelist-format"
    },
    "last-alive": "2023-07-31T23:37:55.150705244Z",
    "token-issued": "2023-07-31T23:37:55.150705244Z",
    "token-expires-at": null,
    "token-starts-at": null,
    "public-keys": [],
    "base-url": "https://example.invalid"
}
  • Example (application/json):
{
    "token-authority": [],
    "config": {
        "formats": [
            "Format 1",
            "Format 2"
        ],
        "type": "gradelist-format"
    },
    "last-alive": "2023-07-31T23:37:55.150705244Z",
    "token-issued": "2023-07-31T23:37:55.150705244Z",
    "token-expires-at": null,
    "token-starts-at": null,
    "public-keys": [
        {
            "use": "enc",
            "kid": "sample RSA",
            "n": "3P-PU9o9zWBIcPJfIg3vAt9_w_9PgLbDUBmgrg8U9BKDFBXYAp75KQ0-Q0FK68VIG1zJFQox9i-dDGTwcIvQ3bt0BxokeciBwQDa9xsxfS0hCOFWY5ljURZ8oiz0SWHvP_pGKDPeVi_xhkzF8erz4WL14twEkBwvGycrxyB_kIU",
            "e": "AQAB",
            "kty": "RSA"
        }
    ],
    "base-url": "https://example.invalid"
}

POST /external-apis/:external-api/pong

Versioning

This route is provided in version 1.0.0

Authentication

Clients must supply the following data
A JSON Web Token-based API key

Captures:

  • external-api: Internal id of the registered external api

Response:

  • Status code 200

  • Headers: []

  • Supported content types are:

    - `application/json`
  • Example (application/json, application/json):

{
    "last-alive": "2023-07-31T23:37:55.150705244Z"
}
  • Example (application/json):
{
    "last-alive": "2023-08-02T23:37:56.150705244Z"
}
  • Example (application/json):
{
    "last-alive": "2023-07-29T23:37:54.150705244Z"
}
  • Example (application/json):
{
    "last-alive": "2023-08-04T23:37:57.150705244Z"
}