# Capabilities

{% hint style="info" %}
***This page must be considered part of the iSHARE Framework***

*This page is considered normative and is therefore compliant with RFC 2119.*
{% endhint %}

The `/capabilities` An endpoint is required for every participant that provides services:

* Participant Registry
* Authorisation Registry
* Service Provider
* Identity Provider

Other roles may provide capabilities endpoint to point the services that are offered by service providers on their behalf.

The endpoint returns the iSHARE capabilities of the iSHARE party. The server response is an iSHARE signed JSON Web Token.

Depending on whether or not an Access Token is provided to the capabilities endpoint, the endpoint must return public or public and restricted endpoints. in detail:

* If an access token IS NOT provided
  * Return public endpoints, including the Access Token endpoint
* If an access token IS provided
  * Return public endpoints, including the Access Token endpoint
  * Return restricted endpoints

Any endpoints that do not support the iSHARE's Identification, Authentication, and Authorisation (IAA) methods and are not intended for use by iSHARE roles should not be included in the capabilities endpoint response. This is because when a participant sees an endpoint in the capabilities response, they will assume it is iSHARE-compliant and supports iSHARE’s IAA mechanisms. However, if a party has other endpoints that rely on different authorisation methods and are not aligned with iSHARE, those should be excluded from the response to prevent misunderstandings.

### Response Model

The model of the `capabilitiesToken` JWT response is [available on the iSHARE OpenAPI documentation](https://openapi.ishare.eu/index.html?version=2.2#/jwt_payload_capabilities_token). For convenience, the model of the parties\_info object, contained within the token, is described below:

**Decoded capabilitiesToken parameters:**

It contains [iSHARE-compliant JWT claims](/reference/ishare-jwt.md); however, if an access token is not provided, then `aud` The claim should be omitted while signing JWT. In addition to that, it also contains the following parameters:

* `capabilities_info`\
  **Object**. Root level. <mark style="color:red;">(Required)</mark>\
  Contains information about capabilities.
  * `publicServices`\
    **An array of objects**. Contained in `capabilities_info`. <mark style="color:red;">(Required)</mark>\
    When no Authorisation header is presented when invoking the /capabilities endpoint, only public\_services are returned. Public services themselves may (and usually will) require authentication to invoke them.
    * `identifier`\
      **String**. Contained in `publicServices`. <mark style="color:red;">(Required)</mark>\
      Unique identifier of the service. For iSHARE-defined services, it must contain the predefined identifier (defined as operationId in the iSHARE generic OpenAPI specification). For other services, it might, for instance, refer to operationId in OpenAPI specifications, or other forms of identifiers in other specification formats.
    * `title`\
      **String**. Contained in `publicServices`. <mark style="color:red;">(Required)</mark>\
      Human-readable name of the service.
    * `description`\
      **String**. Contained in `publicServices`.\
      Description of the service.
    * `endpointDescription`\
      **String**. Contained in `publicServices`.\
      URL that describes the service endpoint. Could be, for instance, a URL to an OpenAPI description, a WSDL document, a SPARQL Service Description, etc.
    * `endpointURL`\
      **String**. Contained in `publicServices`. <mark style="color:red;">(Required)</mark>\
      URL of the endpoint, including the correct host. Depending on the setup, this information could also already be included in the description that is provided via the `endpointDescription`.
    * `tokenEndpoint`\
      **String**. Contained in `publicServices`.\
      URL where the access token for the feature can be retrieved. This is optional because if the feature is an access token, it is not needed to mention it twice.
    * `status`\
      **String**. Contained in `publicServices`. <mark style="color:red;">(Required)</mark>\
      Provides information on the status of the service. Must be either "deprecated" or "active".
    * `serviceType`\
      **String**. Contained in `publicServices`. <mark style="color:red;">(Required)</mark>\
      Can be either "framework-defined", "dataspace-defined" or "self-defined". A framework-defined service is required from a framework perspective (including, for instance, the /capabilities endpoint), a dataspace-defined service is required from a dataspace perspective, and a self-defined service is defined by the provider of the service (actual data services are part of this category).
    * `version`\
      **Object**. Contained in `publicServices`. <mark style="color:red;">(Required)</mark>\
      Versioning information of the provided service.
      * `compliesWithFrameworkVersions`\
        **An array of strings**. Contained in `version`.\
        An array of framework versions that the service complies with, at a framework level. If not included, the service is assumed to be compliant with the latest version. The versions can be retrieved using the [/versions endpoint](https://gitlab.com/ishare-foundation/cab/developer-portal/-/blob/main/ishare-satellite-role/versions.md). Required for framework-defined services.
      * `compliesWithDataspaceVersions`\
        **An array of strings**. Contained in `version`.\
        An array of dataspace versions that the service complies with, at a dataspace level.
      * `capabilityVersion`\
        **An array of strings**. Contained in `version`. <mark style="color:red;">(Required)</mark>\
        Version of the provided service. The version numbering of services is not related to the version numbering of the framework or of a dataspace.
    * `methods`\
      **An array of strings**. Contained in `publicServices`.\
      An array of operations supported by the endpoint. It could be HTTP methods when the endpoint is HTTP-based, for example: GET, POST, etc.
    * `authRegistry`\
      **Object**. Contained in `publicServices`.\
      Optional object which contains details about the Authorisation Register that must be used for this service.
      * `partyId`\
        **String**. Contained in `authRegistry`. <mark style="color:red;">(Required)</mark>\
        Party Identifier of the Authorisation Registry provider that must be used for this service.
      * `url`\
        **String**. Contained in `authRegistry`. <mark style="color:red;">(Required)</mark>\
        The URL pointer specific to the party where authorisations can be queried/checked from.
  * restrictedServices\
    **An array of objects**. Contained in `capabilities_info`.\
    When an Authorisation header is presented when invoking the /capabilities endpoint, in addition to the public services, restricted services may be returned, based on the information provided on the participant by the Authorisation header. This could, for example, be implemented to expose services only to participants of a dataspaces. restrictedServices themselves may (and usually will) require authentication to invoke them. *The attributes of restrictedServices are 100% equal to the attributes of publicServices and therefore omitted here.*

### Example request

```
> Authorization: Bearer IIeDIrdnYo2ngwDQYJKoZIhvcNAQELBQAwSDEZMBcGA1UEAwwQaVNIQ

GET /capabilities
```

### Example response

The response contains an encoded JWT, which looks like this:

```json
{
  "capabilitiesToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlHakRDQ0JIU2dBd0lCQWdJVVhsZHlZL0o3MFVGTFNmY2ljeUFnbkNBYkxhVXdEUVlKS29aSWh2Y05BUUVMQlFBd1hURWVNQndHQTFVRUF3d1ZaVWxFUVZObFUwVkJURTlKUkY5SmMzTkRRVWMwTVJrd0Z3WURWUVJoRXhCT1ZGSk9UQzFwVTBoQlVrVlVSVk5VTVJNd0VRWURWUVFLRXdwcFUwaEJVa1ZVWlhOME1Rc3dDUVlEVlFRR0V3SllXREFlRncweU5ERXhNRFl4TkRNek1URmFGdzB5TnpFeE1EWXhORE16TVRCYU1Hb3hDekFKQmdOVkJBWVRBazVNTVNBd0hnWURWUVFLREJkVVpYTjBJRk5sY25acFkyVWdVSEp2ZG1sa1pYSWdRVEVnTUI0R0ExVUVBd3dYVkdWemRDQlRaWEoyYVdObElGQnliM1pwWkdWeUlFRXhGekFWQmdOVkJHRU1EazVVVWs1TUxURXdNREF3TURBek1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBOW9uQ1F4UDcyRXkyMlIzZ0dNRjgvcy81ODErVGNrZEJ5RHFmZ29ZTEJRbFQwSkt4QXpXandETkZNeUN2TDE4c0w1WE9vVm9qU1dJSkRFZmtBanUwdFdjcGthZkV5Q1U5OVNWVG9Gdzhkd08zSEUyYlFNZ3JUUmNUQ2NjeFVoMnBOMzlMb0FmT3FLUngrcHRkTDJzUWo5T0RZaXNkUWFqb01GTmlONjdGVmFBTVpWT3hDUXdydy82eGdjUnVzaEZlT0UzZHNKOVVVKyt2TU9OdThWNzdXS2lKaXVEQlFQdlJ5ejBibjVvblRXQXBlM0lhSDdMWG9YcnhKL2xBcGxCL0R3OGtCTHV2eUpta2hwZWxrRjJUb3ZxaERYNTVqNEtTWU8rU09md0tXbmVrdEZnQWVURjJrM0NrcloyY2Y5UU9EY1FpVnowL0NxWGNrTEpoTlAxVkJ3SURBUUFCbzRJQ05UQ0NBakV3RGdZRFZSMFBBUUgvQkFRREFnWkFNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVzeHBQUWtEcDJIaWRhLy84SkxBUXNUUTg4SWt3VndZSUt3WUJCUVVIQVFFRVN6QkpNRWNHQ0NzR0FRVUZCekFCaGp0b2RIUndjem92TDJOaE55NXBjMmhoY21WMFpYTjBMbTVsZERvNE5EUXlMMlZxWW1OaEwzQjFZbXhwWTNkbFlpOXpkR0YwZFhNdmIyTnpjREFRQmdOVkhTQUVDVEFITUFVR0ExVWRJREFmQmdOVkhTVUVHREFXQmdnckJnRUZCUWNEQkFZS0t3WUJCQUdDTndvREREQmJCZ2dyQmdFRkJRY0JBd1JQTUUwd0V3WUdCQUNPUmdFR01Ba0dCd1FBamtZQkJnSXdOZ1lJS3dZQkJRVUhBUU1NS2xSb2FYTWdhWE1nZEdWemRDQmxjMlZoYkNCalpYSjBhV1pwWTJGMFpTQm1iM0lnZEdWemRHbHVaekFlQmdWbmdRd0RBUVFWTUJNVEEwNVVVaE1DVGt3TUNERXdNREF3TURBek1JSEhCZ05WSFI4RWdiOHdnYnd3Z2JtZ2diYWdnYk9HZ2JCb2RIUndjem92TDJOaE55NXBjMmhoY21WMFpYTjBMbTVsZERvNE5EUXlMMlZxWW1OaEwzQjFZbXhwWTNkbFlpOTNaV0prYVhOMEwyTmxjblJrYVhOMFAyTnRaRDFqY213bWFYTnpkV1Z5UFVOT0pUTkVaVWxFUVZObFUwVkJURTlKUkY5SmMzTkRRVWMwSlRKRGIzSm5ZVzVwZW1GMGFXOXVTV1JsYm5ScFptbGxjaVV6UkU1VVVrNU1MV2xUU0VGU1JWUkZVMVFsTWtOUEpUTkVhVk5JUVZKRlZHVnpkQ1V5UTBNbE0wUllXREFkQmdOVkhRNEVGZ1FVZkkvNkZzVzFZT0RRTWtnbEhXZWZITWFXRjhFd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFHMnc0ZGdjTkRhL0ltVTZQK09yUEFaYWp5M0c3aCs2ejRpUFJCV1hnc0RjbDVVTHBOVXpTSUljZ2dHb05rYUNJU294KzFyV0ZwM3BOUWx4c1lkYjhFcjFYRFBvOG9WRjU4M241VU95UFVpTENnUU5GV0ZxaUg3NnpkeEk5c2Fua0l5TVMrZytuSHZxRlR1Y1pqbkVnbU5MWjZhNDVxQ2ZYRXRtRnkxUVJRMU4wcWZ3d2VEVEpWYjNCb054RU84UjdlQWg0cTBOaFNxWGJrb3JQUUxlamsyWG5NYm5NOHRqc1V1cmpwQ3M4VU1nMFR6UlROdXlHLzd0VmFMcmRFbnBxUDIwK2drNXE1d2FFRndwRDZlT3ZxbFVnSDByRkxrMlZQOEhidG4xM0dhQlpCa3FBUzJrbmJxZFZ2VEZpclR6RldNMGRRTmk5NzdBbDRsVmJYTGNBSEVaNWpTazRWYnFyYkFGQm9wS0tNUFNWL0NzeStwMksvc25mVjNRcXhhRnhUdjloTUFuVG1rUTFudTNuU1BwQXE5OUI1cURuQXdxaHlqaHFNdEpIbEd5cWQyeUl1aHFrMmVjeVl3cThSRGpLTkFqZE1MRzVLWERLckdraW9WcnFLdDNBa2F2dk5HV0J0NlFiVnNoNFJZWWI4SVc4L2RCWU9jOVhWV2xNS1RKdHc0dUVvQW1xVTNMV3E4OXJSOW5jcmwwMWlUbDJjaWlKamZRN21sNTIyUXZHUmwxbGtUZnJ6K2Y2VnJQOEVPKzkrTWVtck96eFFJbjNqUms2TlFydlNGanlKWDNZTUV6YVlIL2NBMld2Mm16V0ZjOWJUa25lYjdXa3ZWeFcxOFhxaGpjc25qdDk2N2Rlamk5eDExTExZOE5Cd1I3S3J6Si9kSmRNTHFucHlLWSIsIk1JSUYyakNDQThLZ0F3SUJBZ0lVUEczK1RBbnhWT0JjZTlOYVB0OXBUQWdtNVI0d0RRWUpLb1pJaHZjTkFRRUxCUUF3UWpFZU1Cd0dBMVVFQXd3VlpVbEVRVk5sVTBWQlRFOUpSRjlUZFdKRFFVY3pNUk13RVFZRFZRUUtFd3BwVTBoQlVrVlVaWE4wTVFzd0NRWURWUVFHRXdKWVdEQWVGdzB5TXpBNE1qVXdPVEF4TXpKYUZ3MDBPREE0TWpVd09UQXdNRFZhTUYweEhqQWNCZ05WQkFNTUZXVkpSRUZUWlZORlFVeFBTVVJmU1hOelEwRkhOREVaTUJjR0ExVUVZUk1RVGxSU1Rrd3RhVk5JUVZKRlZFVlRWREVUTUJFR0ExVUVDaE1LYVZOSVFWSkZWR1Z6ZERFTE1Ba0dBMVVFQmhNQ1dGZ3dnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFEYW5VZ00xL1BReVhOVFgrVU9MR3JaalM4SGFUV1IvUDR4RDhTTUNSeE9YSEt6SExRcUVRT3VIRC93K3J4OS9iRXd6SDR3VmZKMG02L3I1NktPZzB3TFVsVndPeWlrT1hHb0lURDJ1K1VpOXQyNHRZSWt4OHpqTEc3VkhWY3c0ZFhPdDkyc3ZLWTFMeWJ2bHByb1d6VEhsUndvSU8xWVE0aE8rcnlic3cvS0VERVhVYmtvd2psSEFQY3duc09XNjQzNjdFTitlelQxc1M4ZHpGSXhtRzhxQzJMck0yc1hKV3FxNXZKZUUvODZUZloyTk1PK0NVeGtqajd1UGdiVzJWL01PVWhZeUF0R0FqemQvS3dPckxNUk1ZYVhPSWo2MW04UjcxbmgvTFY5bjhkbmowd1RRT05USGh1TTdtZFpReGhxT2RrTDJja1NyQldpM2F0RVZUMU9oQlJYNEZtbWhJaG1TV3VDdGd5S2lEQ0lvdHlHQXNYMm82ODE3ZmVlNFJkdHdmdzlRNG9OM05BaHRvZDYwaU9BV0FwVnQrQlQ1dHZkZ0dPWVdQY2JNUjVwR3picDM4ZEdVeXV3WVpWNExBbklHU201eWF1Y05FMkUyeHJRQ2JFZVptNFJQc3g1SmxlV3ppcGsrNDJkN3ZxdldEODhJUWNRK2JaTTJYNHJKQlpOczE2NkNseCttNkhtS3hLQUxlYlV0anN6c2d5SDhjcTEwZCtrNEFvOG9DYU9ZanYySWFFYk1kK2ZWL1VmOGtQa3pUdEtsdHRkcWlpeG9JcXljWE1FZ0JhU2drdWI3WG9RNksyNnRSUEowdzVRa3V1aDNNS3RHRVdmVzdFRUdtcG5DcWpPdjYvckFNSmlNV3loMUlnTGdOQlVQUDd6YVZQcERBdEM4OE9TSlFJREFRQUJvNEdzTUlHcE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRRXdId1lEVlIwakJCZ3dGb0FVNHViWDBwNkRWak45REt0T1dXTVlBcytIeGRRd0dBWURWUjBnQkJFd0R6QUZCZ05WSFNBd0JnWUVWUjBnQURBcEJnTlZIU1VFSWpBZ0JnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3UUdDaXNHQVFRQmdqY0tBd3d3SFFZRFZSME9CQllFRkxNYVQwSkE2ZGg0bld2Ly9DU3dFTEUwUFBDSk1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQVp2NUd1a3gwUEV2VlJFSXQ4TVRhUGZDSDRhd3lpaVl5aTE3aDZSNUxMazFyZXJ3UXNTU1NIZlZxZnRkd1JGMG9jTHAyUFhKaGUwNzVxVjQwNkMwNENqYW1OazNlejlaaU5IQ05qUHRmaWQ2b094cXoxWGs4WFBqTllFbGJBRm1QN2VLbC80NDF2WmhHdWsvUmhYR054UWJ0bzBRMTZnOElSY0dEdldnTmh0cnRCMUcyeFNtdEIxUzJ1VXBTYWlaVk5PcmtkelRoaUVKc2VVUkJvWHhVWElxcEx5UFRSbDZNTWdWYUxHUllSYzN2WWlqNEI3TTJoQk43L2NqbkdMc01WdGdiT3Y2Q1YyMWcyU1hvd2JnT3F6QnlINTFVVFI2T2JIaUdqMGtTQ0FMRzE0SVFQa3pRUGlTcGp1Kys5TTJqQWpQTTNvNDIxWk9VRE1QMjQ2Q3NxUFhyVEFiUFhKVlVSL2dpNHU1M2ttekMyMTBqdlZxOWhId2VseFFPVFBGaGxNNkUxQ2g0SmI0UFFSTEtEUEZsKzVOVzRGeTJKQURqeXVweVZIbmNkTEV1UHkwUGdDTDJZbzE0N0hTcFBqNHU3amMxUm1IVTdOTzEyRVYyWkNNZkZsUndkR3Y2aWY4cU83cy82bHBaSmpwUHRMRU9iQTV0RDRhaGMrYVBOQWk5V0NrMHBlUm0xS0U1VkdEV0tGTlNOQWlMSk56UDdtMlE2eThmT3kzOGNOZ0ZCaEdPRi9LZ0VJc1QxMFYrNUs1byt5bFZWdFBWZVJSRU5FdktPOUVMa3plMElIZ3NUQi82Y3dPaWo0cHhNOUp2YXVqMDZHZ2xoSWhpSUE2cTBpRFVxQjFNVVIwSHppWTlCc25XWTlrUjhod1YzT1crbnNtenRRd0dWRXcya2pVPSIsIk1JSUZqakNDQTNhZ0F3SUJBZ0lVRmo5LzNqR09SaHRJcFo5OE9MUnRSSHMwQVlzd0RRWUpLb1pJaHZjTkFRRUxCUUF3UVRFZE1Cc0dBMVVFQXd3VVpVbEVRVk5sVTBWQlRFOUpSRjlTYjI5MFJ6SXhFekFSQmdOVkJBb1RDbWxUU0VGU1JWUmxjM1F4Q3pBSkJnTlZCQVlUQWxoWU1CNFhEVEl6TURneU5UQTVNREEwTkZvWERUUTRNRGd5TlRBNU1EQXdOVm93UWpFZU1Cd0dBMVVFQXd3VlpVbEVRVk5sVTBWQlRFOUpSRjlUZFdKRFFVY3pNUk13RVFZRFZRUUtFd3BwVTBoQlVrVlVaWE4wTVFzd0NRWURWUVFHRXdKWVdEQ0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQUw3bnpreW9GWFdnMWdoZEc2Zm51enV2QWRNV3NtL0krbVgzRGJ6M0kvS3lxTGRXdDdYRzNPV1ZTbmhvc0FEMlcyU1hubEdYcXh5ZTBoUHRFZ2tRSWRlbDdGbkZvc1dXcnNFT3JhdGdYbG5NNE5XcFlES01XRVZZcm83aHpIZ0NaMTI2WlBRVUxsczUyTmN2cFJNOFMzZFprK1hLMWtmM1ZlUzBKMmhVU0ZFQVpITHlYQ1hraFRuVUk3cW8xdXIxVG1EV1lzTlF3eERHT3U3Q1F5WllkS0l3S3FJOWVHc1JMZ002UFFsZzN2WkNyb3BPb2RNN2xvVHVpckNsM1VLdzRIckdrMmNPaUFmNElkLy9lYVZDYWZ3a2pLc0pUUXVBYWh1Uno0cU1zSFlBM2tEUXorMCtoZ25SNzRyK2lMcis4bHIwNDRnbG5hV0lXdnJFR2NpUlIrUGVjdGZyTE9RUUlXN2hhMTNkeldvemtUMGFnblQxTGsvQ0dyZ05YVnFob3NHQzBydUFRUEk2RGNQTnkySU5NOUpndENtQnNTak1NMTg1RklCWDRDeTE3bTczaDlyS2pYWk14YjZUeFg3Q0laeWVzZ0FTMGJCUmI2eElwS3NacmxyakVhenNqQzJWSFJSV09NSldZcWNYTEQ1Wk56R01aVXI2VHQyeUNVQXRhbWVjREFUS042L0dic3hlMHRBQk4wcGswcng1aWMrNFRYZEJyb045T0FaY2hINHRKQ3NPQ0tvbkN6QXBQeFZUaEROTXhzb295RnE5RG1nWGh5RVVPT29lUytGcjRGZ0gralNBTm0vbDE3OEpoOWVwZlhROWdFLzZhcVB4WWpOU0JnUzYwUzFFVnFDcHh3MnJUMW1VWWVHZndpYlZtNTNpeEdwdFI4a3RlNzBuQWdNQkFBR2pmVEI3TUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SHdZRFZSMGpCQmd3Rm9BVTJMdWJOUzFiUCsvaGE4dk1ETStpTHJwcGVvd3dHQVlEVlIwZ0JCRXdEekFGQmdOVkhTQXdCZ1lFVlIwZ0FEQWRCZ05WSFE0RUZnUVU0dWJYMHA2RFZqTjlES3RPV1dNWUFzK0h4ZFF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUI4anFZVXc3VHYrVzRaSDA2UHJhRjZ6ZmRDeFQwM0RoUkNodzRaL1FtMFhWUzJnUnlSd2NNcHRRRkVSaFBOT0EyMjF1OUxxb3paMWFLM0IzNXdrY0dEL2RGSmdKQ0pCOTZTTXR0UWwySHAvRWlRejlQRkYwMmRCU3J1WGhJYXJhUGJNK05JR2RteU4yWnl3R0dYSTFhVTdKRDNYRzI5U2gyQUFkT2t2OGRJNmdFZ3p0L0RIU0lJYmFrYmFMZEVJYzdXQjk1R1VIY0huTmo1OFR6VFN5VmZCbXRiM3ZCSzlKRzBJbzZOQVBXUVl4MlZQOCtmSXlsamEyZDEyOGhnaDBkc0RyWEZBTSs5QVg4aGFlNXZ2eFZpOFRXcy96MmluZytrK2ltbXRTTmZ6ektNaU83cjV3SkFreWp3dFVCbEJTdEtJQTZaZXIyMnBtU1RaWmV1Y0hkRVRoYWJjV1FpZFZabU1QM0lmNml4NVVleVg4VjZPQXcwZ3NJM0lVYjkxUTc2ZDRzTFdiem9HTk9OQVlGQzFJeXoweFdqNDdaZDZQN1oyR2ZoMVZpSWJNeFZpRkRsTm1iRVpmbHBFUzg3Sy95aEJVUS90bkNOR1FvU2R0c3V5dVdnM05mV2J5Sm9OWnpsVTk2Sld4Y3FTYVhrenNlOWo4d2FoYXlLTk02U1dLU1kxWjA1aDhKU2NPQ21GQjVGOFYzYmQ1blAvdUtqYTdIOE80R09BQVBNM090RytlcTM3eFcveE4wb0FzamJ2dDRvam5VYkpzMmtpQXhFZHdYeDBLN21jUGVTN3pXbVZ0OGg0UmRjRG0vUEdURGE5bThPcWhRdWNrODBRbnV4SVVXVnI3R1dhZGgxTHkvdGwwK2J2bWtjbk8yeWJSSitnYnFSRUhEVGUwc3hzdz09IiwiTUlJRmN6Q0NBMXVnQXdJQkFnSVVDdmZTdlFlcmpGRG1NMkx2bWpvVERPSW5MQXd3RFFZSktvWklodmNOQVFFTEJRQXdRVEVkTUJzR0ExVUVBd3dVWlVsRVFWTmxVMFZCVEU5SlJGOVNiMjkwUnpJeEV6QVJCZ05WQkFvVENtbFRTRUZTUlZSbGMzUXhDekFKQmdOVkJBWVRBbGhZTUI0WERUSXpNRGd5TlRBNU1EQXdObG9YRFRRNE1EZ3lOVEE1TURBd05Wb3dRVEVkTUJzR0ExVUVBd3dVWlVsRVFWTmxVMFZCVEU5SlJGOVNiMjkwUnpJeEV6QVJCZ05WQkFvVENtbFRTRUZTUlZSbGMzUXhDekFKQmdOVkJBWVRBbGhZTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUF4Vk1LSTlSTWhuT1NBMkxvcmdFQzNZRE5kMml0bjcyTE9kZlJSVXU0NWZHNzBJZXYrRTRrUnJ6SjFrMjNXWEg1c0hUYmNzbHBFVGVBWm5qMC94S0JZZEVMdXdlNkhYOGtJd2QxczZXR2xaYzBsN2tpMWZtajRIcVNzdEdKL0JLR2oxYTcyMzZXd1BKRVdFSHFmeDlRTUVldUpLbFVTVkZGeUU0ak1zZllwODdpZklwdXdFOG9MT3c0eWtERE9QNTJUZDA2dkhDSVlycURCcnZ4RmRBdUVuRnhOeGxQWFJFNGdMc3lnZzYySE94T3VHbWhXZnN5NlRjY0lwNVhJT2RqMkN6ZW9YSjgybTUvaW1CUEp2a2VmbnJqRVFYemlTRTJtaTJJQkR0R1AvQXdGV0k3V3BzRXlEWFdJbU1TUjBUM0N1RG1rZVExNHBObWNxTXAvYnFYM2kxYWV0YWRGVFdzdWhsMG5IMmlScUtaREp4WmxTY3U5OXRvcTVHcmRjRlVjeEdSUXlsK3NGaFVoM1hjQldKVjdZMnduRkwydFk3dGh0UThaUG16VE84a1BLQ2JFbDVVNmdDU0lrcFJQTlpCUEc0ZFQwcXUrOEJkNzFQdTduQXkxaUI0VTZ5czM0Y0ZsT2xKcEdNMEZHcjM1TGVmYlBSOGJnejZNOVhOalJiZ01EUWNYRE1uZmlESjdFODFvVkJwQ1hOOXlkSGkxYmxoYWt1RUJhb2E5TS9rYXppcEdQbUF1eHJXQk1tcDJxMHd6UXA5R1MyZThrZUpJRHdKdXl6RUxhUlpDNHlqVnNWWlFNSy8vRCs0SjNib1U1ZHJDbW1tNkMxcndOUmZTWnVGR05jSVlEWmVIdGVHb0NGNEVBNWpjZ2RGYUlZckRlajZWQWFiNDJ2TjVMVUNBd0VBQWFOak1HRXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWZCZ05WSFNNRUdEQVdnQlRZdTVzMUxWcy83K0ZyeTh3TXo2SXV1bWw2akRBZEJnTlZIUTRFRmdRVTJMdWJOUzFiUCsvaGE4dk1ETStpTHJwcGVvd3dEZ1lEVlIwUEFRSC9CQVFEQWdFR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmJjSHlWMmI1bUd3SFd4Q1NiRHdyNVY3UGdTWklKYTFzY3JDbklIRDNaL3l4RzdYcDVjSWxCajRNeTRsUkhqWnRKVnZVZlRqRnBzRURFdi9QQXE3NE9Jb2xOL2tQZE1mVGN6RkJHcHZzWnIweDJ5VVBFSnpRc1RTTHgwZ3daK3d2b0tIV0UwQzdHcWdrQUJOckZXOEZMcVJ6TnFYc21NNW9JNGMzVjVzeXh3QllGRFVZNU1QV2RxSkVEZlJ2ampKUENYbUtPUDFsTytpK0UwN3ZzRnBEekhTMkZLQjVjNnNUSVprdnQrSC9DRzRoVnU2WnZjRlhYenYySksvRW9WWjZ3VWRDbHQ0cExnVFFaL1cwcVFDSjNHakZlL1BaNzRtY2tXMXgvems5ejBWUWpVcFRxejNBalBMSWpqNjBuTUxUTHA1MG9GY01ManVYc3MwdnY0dFVqQ1RwczJRZzluMEd3TGxEUjQyTnl3MlRLY01NQjZ5Y0VvTmlVRXUwbGdhMUpNMFNWU3NGUDdHU1UvVzlWcWF0Szd4cC9YVzkvR0R2Z3AzWi9wUE0wRTNpMXRxcC9uT1U0M1lvZjhXaTRKSjZ6T2dYQnpxUXhPNk1JTFpKNHFFZmVuQXRJN285NVR5NXlrOXZSYm9Vc3R5d3NmQzZDVnN1MDhOTC90dHc0T1NYT3Zia1ErN3pNeENZVDlZeVFENWwvbHRDM2JnZGovbEJaem5zQnVHWU5PQjE2d0ROY0dwdXVhZWtzZlFmQkRQSFQrdlI2Z1BWRlpweVZ3eS90ekg2TlRwVUdEam9IVnNDeFVqWTg3ME9NNEQySmNqOU9JcXFkbGtDb1dPNmk0VmVjN3NUenhpWDM5b05TcjFHN0NvYmMzc1lkaG54Zy92bGcxQmVDSjg3cDBBPT0iXX0.eyJpc3MiOiJkaWQ6aXNoYXJlOkVVLk5MLk5UUkxOTC0xMDAwMDAwMyIsInN1YiI6ImRpZDppc2hhcmU6RVUuTkwuTlRSTE5MLTEwMDAwMDAzIiwiYXVkIjoiZGlkOmlzaGFyZTpFVS5OTC5OVFJMTkwtMTAwMDAwMDEiLCJqdGkiOiI3MDcxZWNjNTE1NDQ0MTI3OTkwMzYyMmFmMWJlZGJjMCIsImlhdCI6MTU5MTk2NTI3NywiZXhwIjoxNTkxOTY1MzA3LCJjYXBhYmlsaXRpZXNfaW5mbyI6eyJwdWJsaWNTZXJ2aWNlcyI6W3siaWRlbnRpZmllciI6Ii9jYXBhYmlsaXRpZXMiLCJ0aXRsZSI6IkNhcGFiaWxpdGllcyIsImRlc2NyaXB0aW9uIjoiaVNIQVJFIENhcGFiaWxpdGllcyBFbmRwb2ludCIsImRlc2NyaXB0aW9uVVJMIjoiaHR0cHM6Ly9vcGVuYXBpLmlzaGFyZS5ldS9pbmRleC5odG1sP3ZlcnNpb249Mi4yIy9TZXJ2aWNlJTIwUHJvdmlkZXIvJTJGY2FwYWJpbGl0aWVzIiwiZW5kcG9pbnRVUkwiOiJodHRwczovL3Rlc3Qtc2VydmljZS1wcm92aWRlci5pc2hhcmUuZXUvY2FwYWJpbGl0aWVzIiwidG9rZW5FbmRwb2ludCI6Imh0dHBzOi8vdGVzdC1zZXJ2aWNlLXByb3ZpZGVyLmlzaGFyZS5ldS90b2tlbiIsInN0YXR1cyI6ImFjdGl2ZSIsInNlcnZpY2VUeXBlIjoiZnJhbWV3b3JrLWRlZmluZWQiLCJ2ZXJzaW9uIjp7ImNvbXBsaWVzV2l0aEZyYW1ld29ya1ZlcnNpb25zIjpbIjIuMSJdLCJjb21wbGllc1dpdGhEYXRhc3BhY2VWZXJzaW9ucyI6WyIxLjAiXSwiY2FwYWJpbGl0eVZlcnNpb24iOiIxLjUifSwibWV0aG9kcyI6WyJHRVQiLCJQT1NUIl0sImF1dGhSZWdpc3RyeSI6eyJwYXJ0eUlkIjoiZGlkOmlzaGFyZTpFVS5OTC5OVFJOTC0xMDAwMDAwNCIsInVybCI6Imh0dHBzOi8vYXIuaXNoYXJldGVzdC5uZXQifX1dfX0.jXoJAjczjRrsxZQUR6SS0xYbNpec9VYXwk5msnELa8e2TdDkH6KsHvCIzDB1KkQ-_F85T4EoPlwfWxIjFUQj1jIC8E6JcVUlb9eXKOEjOilpF0imudBtoWmosgCDmZcSy0dW-b-PniVZVibYBp9BynYVS-Ecx-mY6VhvSo_3HmxAagEppTc-TzJIc0uo3ZGW2psr3DsW_Xm8N31MgSf4EA_V6IlCvEoD81SLJZCL6PmMc6Jp4vEO7Ry9WFa_oJjJLcGRmJCso47f_UhHknM5R53CdxSw9ibF8zEWOf9KWBoK7xy9rZJFhf9298HrJuw5AiTX5jBJ8LGP2K1MsgZF5w"
}
```

After decoding, the example content of the JWT looks like this:

```json
{
  "iss": "did:ishare:EU.NL.NTRLNL-10000003",
  "sub": "did:ishare:EU.NL.NTRLNL-10000003",
  "aud": "did:ishare:EU.NL.NTRLNL-10000001",
  "jti": "7071ecc5154441279903622af1bedbc0",
  "iat": 1591965277,
  "exp": 1591965307,
  "capabilities_info": {
    "publicServices": [
      {
        "identifier": "/capabilities",
        "title": "Capabilities",
        "description": "iSHARE Capabilities Endpoint",
        "endpointDescription": "https://openapi.ishare.eu/index.html?version=2.2#/Service%20Provider/%2Fcapabilities",        
        "endpointURL": "https://test-service-provider.ishare.eu/capabilities",
        "tokenEndpoint": "https://test-service-provider.ishare.eu/token",
        "status": "active",
        "serviceType": "framework-defined",
        "version": {
          "compliesWithFrameworkVersions": [
            "2.1"
          ],
          "compliesWithDataspaceVersions": [
            "1.0"
          ],
          "capabilityVersion": "1.5"
        },
        "methods": [
          "GET",
          "POST"
        ],
        "authRegistry": {
          "partyId": "did:ishare:EU.NL.NTRNL-10000004",
          "url": "https://ar.isharetest.net"
        }
      }
    ]
  }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dev.ishare.eu/all-roles-common-endpoints/capabilities.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
