{
  "openapi": "3.1.0",
  "info": {
    "title": "Bevisstudio API",
    "version": "1",
    "summary": "Utsted, verifiser og trekk tilbake digitale bevis (EUDI) for din organisasjon.",
    "description": "Alt går gjennom dette API-et, med ett token. Hent tokenet med klientlegitimasjon på `token_endpoint` fra `/.well-known/oauth-authorization-server`, og send det som `Authorization: Bearer`. Organisasjonen følger av klienten og er aldri en parameter.\n\nReisen: bevistype → utstedelsesregel → publiser → bestill (gir lenka til lommeboka). For å kontrollere: verifiseringsregel → start verifisering → les resultatet.\n\nFeil svarer med `application/problem+json` (RFC 7807). `type` slutter på feilkoden, og det er den du forgrener på.",
    "contact": {
      "name": "Kantega Bevisstudio",
      "url": "https://bevisstudio.no/utviklere"
    }
  },
  "servers": [
    {
      "url": "https://api.kantega.id",
      "description": "Produksjon",
      "x-internal": false
    }
  ],
  "paths": {
    "/.well-known/oauth-authorization-server": {
      "get": {
        "operationId": "getWellKnownOauthAuthorizationServer",
        "tags": [
          ".well-known"
        ],
        "summary": "Adressene og tilgangene (RFC 8414)",
        "description": "Les `token_endpoint` herfra framfor å skrive adressen inn i koden.",
        "security": [],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationServerMetadataWire"
                }
              }
            }
          },
          "404": {
            "description": "Token-endepunktet er ikke satt opp."
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/oauth/token": {
      "post": {
        "operationId": "postOauthToken",
        "tags": [
          "oauth"
        ],
        "summary": "Hent et token",
        "description": "Klientlegitimasjon (RFC 6749 §4.4). `client_id` og `client_secret` sendes i `Authorization: Basic` eller i kroppen, ikke begge. Tokenet sendes som `Authorization: Bearer` på alle andre kall.\n\nUten `scope` får tokenet alle tilgangene klienten er registrert med (RFC 6749 §3.3 lar serveren velge). Be om bare dem du trenger. `scope` i svaret sier hva tokenet fikk.\n\nLevetiden står i `expires_in` og varierer med miljøet. Les den, og bruk samme token til det utløper.",
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/TokenRequest"
              }
            }
          }
        },
        "security": [],
        "responses": {
          "200": {
            "description": "Tokenet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponse"
                }
              }
            }
          },
          "400": {
            "description": "Forespørselen er feil (RFC 6749 §5.2).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenError"
                }
              }
            }
          },
          "401": {
            "description": "`invalid_client`: ukjent klient eller feil hemmelighet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenError"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/access-certificates": {
      "get": {
        "operationId": "accessCertificate.list",
        "tags": [
          "access-certificates"
        ],
        "summary": "Verifiernes tilgangssertifikater",
        "security": [
          {
            "eidas": [
              "verification-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AccessCertificateWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Verifiertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `verification-rule-rejected`.",
            "x-problem-codes": [
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/access-certificates/{certificateId}/activate": {
      "parameters": [
        {
          "name": "certificateId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "accessCertificate.activate",
        "tags": [
          "access-certificates"
        ],
        "summary": "Gjør et tilgangssertifikat aktivt",
        "security": [
          {
            "eidas": [
              "verifier-access-certificates:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessCertificateWire"
                }
              }
            }
          },
          "400": {
            "description": "Verifiertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `verification-rule-rejected`.",
            "x-problem-codes": [
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `access-certificate-not-found`.",
            "x-problem-codes": [
              "access-certificate-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En lik skriving pågår, eller verifieren er ikke klargjort hos verifiertjenesten. Kode: `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/access-certificates/{certificateId}/revoke": {
      "parameters": [
        {
          "name": "certificateId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "accessCertificate.revoke",
        "tags": [
          "access-certificates"
        ],
        "summary": "Trekk tilbake et tilgangssertifikat",
        "security": [
          {
            "eidas": [
              "verifier-access-certificates:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessCertificateWire"
                }
              }
            }
          },
          "400": {
            "description": "Verifiertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `verification-rule-rejected`.",
            "x-problem-codes": [
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `access-certificate-not-found`.",
            "x-problem-codes": [
              "access-certificate-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En lik skriving pågår, eller verifieren er ikke klargjort hos verifiertjenesten. Kode: `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/auth-providers": {
      "get": {
        "operationId": "authProvider.list",
        "tags": [
          "auth-providers"
        ],
        "summary": "Identitetsleverandørene",
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AuthProviderWire"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "authProvider.create",
        "tags": [
          "auth-providers"
        ],
        "summary": "Opprett en identitetsleverandør",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthProviderCreateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "auth-providers:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthProviderWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`.",
            "x-problem-codes": [
              "malformed-request"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Uten kropp når klienten er avgrenset bort fra det kallet gjelder."
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/auth-providers/{authProviderId}": {
      "parameters": [
        {
          "name": "authProviderId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "operationId": "authProvider.delete",
        "tags": [
          "auth-providers"
        ],
        "summary": "Slett en identitetsleverandør",
        "security": [
          {
            "eidas": [
              "auth-providers:manage"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Utført. Ingen kropp."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `auth-provider-not-found`.",
            "x-problem-codes": [
              "auth-provider-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En regel bruker leverandøren. Kode: `auth-provider-in-use`.",
            "x-problem-codes": [
              "auth-provider-in-use"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "authProvider.read",
        "tags": [
          "auth-providers"
        ],
        "summary": "Én identitetsleverandør",
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthProviderWire"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `auth-provider-not-found`.",
            "x-problem-codes": [
              "auth-provider-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "authProvider.update",
        "tags": [
          "auth-providers"
        ],
        "summary": "Endre en identitetsleverandør",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthProviderUpdateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "auth-providers:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthProviderWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`.",
            "x-problem-codes": [
              "malformed-request"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `auth-provider-not-found`.",
            "x-problem-codes": [
              "auth-provider-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/claim-sources": {
      "get": {
        "operationId": "claimSource.list",
        "tags": [
          "claim-sources"
        ],
        "summary": "Opplysningskildene",
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClaimSourceWire"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "claimSource.create",
        "tags": [
          "claim-sources"
        ],
        "summary": "Opprett en opplysningskilde",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClaimSourceCreateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "claim-sources:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimSourceWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`.",
            "x-problem-codes": [
              "malformed-request"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Uten kropp når klienten er avgrenset bort fra det kallet gjelder."
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/claim-sources/{claimSourceId}": {
      "parameters": [
        {
          "name": "claimSourceId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "operationId": "claimSource.delete",
        "tags": [
          "claim-sources"
        ],
        "summary": "Slett en opplysningskilde",
        "security": [
          {
            "eidas": [
              "claim-sources:manage"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Utført. Ingen kropp."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `claim-source-not-found`.",
            "x-problem-codes": [
              "claim-source-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En bevistype bruker kilden. Kode: `claim-source-in-use`.",
            "x-problem-codes": [
              "claim-source-in-use"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "claimSource.read",
        "tags": [
          "claim-sources"
        ],
        "summary": "Én opplysningskilde",
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimSourceWire"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `claim-source-not-found`.",
            "x-problem-codes": [
              "claim-source-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "claimSource.update",
        "tags": [
          "claim-sources"
        ],
        "summary": "Endre en opplysningskilde",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClaimSourceUpdateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "claim-sources:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimSourceWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`.",
            "x-problem-codes": [
              "malformed-request"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `claim-source-not-found`.",
            "x-problem-codes": [
              "claim-source-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/credential-types": {
      "get": {
        "operationId": "credentialType.list",
        "tags": [
          "credential-types"
        ],
        "summary": "Bevistypene",
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CredentialTypeWire"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "credentialType.create",
        "tags": [
          "credential-types"
        ],
        "summary": "Opprett en bevistype",
        "description": "Beskriv feltene selv (`name` og `claims`), eller kopier en mal med `rulebook`. Send ikke `vct`: den avledes av organisasjonen og navnet, låses, og står i svaret på publiseringen.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialTypeCreateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "credential-types:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialTypeWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`.",
            "x-problem-codes": [
              "malformed-request"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "`claimSourceId` finnes ikke. Uten kropp når klienten er avgrenset bort fra det kallet gjelder. Kode: `claim-source-not-found`.",
            "x-problem-codes": [
              "claim-source-not-found"
            ],
            "x-body-optional": true,
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Kvoten er brukt opp, eller docType er i bruk. Kode: `quota-exceeded`, `mdoc-doctype-taken`.",
            "x-problem-codes": [
              "quota-exceeded",
              "mdoc-doctype-taken"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/credential-types/{credentialTypeId}": {
      "parameters": [
        {
          "name": "credentialTypeId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "operationId": "credentialType.delete",
        "tags": [
          "credential-types"
        ],
        "summary": "Slett en bevistype",
        "security": [
          {
            "eidas": [
              "credential-types:manage"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Utført. Ingen kropp."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `credential-type-not-found`.",
            "x-problem-codes": [
              "credential-type-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "credentialType.read",
        "tags": [
          "credential-types"
        ],
        "summary": "Én bevistype",
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialTypeWire"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `credential-type-not-found`.",
            "x-problem-codes": [
              "credential-type-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "credentialType.update",
        "tags": [
          "credential-types"
        ],
        "summary": "Endre en bevistype",
        "description": "Utelatte felter beholdes. En endring etter publisering krever ny publisering av regelen.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialTypeUpdateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "credential-types:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialTypeWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`.",
            "x-problem-codes": [
              "malformed-request"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "`claimSourceId` finnes ikke. Kode: `credential-type-not-found`, `claim-source-not-found`.",
            "x-problem-codes": [
              "credential-type-not-found",
              "claim-source-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "vct kan ikke endres, eller docType er i bruk. Kode: `credential-type-vct-is-immutable`, `mdoc-doctype-taken`.",
            "x-problem-codes": [
              "credential-type-vct-is-immutable",
              "mdoc-doctype-taken"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/credential-types/{credentialTypeId}/logo": {
      "parameters": [
        {
          "name": "credentialTypeId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "operationId": "credentialType.logo.delete",
        "tags": [
          "credential-types"
        ],
        "summary": "Fjern logoen",
        "security": [
          {
            "eidas": [
              "credential-types:manage"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Utført. Ingen kropp."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `credential-type-not-found`.",
            "x-problem-codes": [
              "credential-type-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "credentialType.logo.upload",
        "tags": [
          "credential-types"
        ],
        "summary": "Last opp logoen",
        "requestBody": {
          "required": true,
          "content": {
            "image/png": {
              "schema": {
                "type": "string",
                "contentMediaType": "image/png"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "credential-types:manage"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Utført. Ingen kropp."
          },
          "400": {
            "description": "Ikke PNG, eller større enn 256 KiB. Kode: `malformed-request`.",
            "x-problem-codes": [
              "malformed-request"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `credential-type-not-found`.",
            "x-problem-codes": [
              "credential-type-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Plattformen har ingen adresse lommebøkene kan hente logoen fra. Kode: `logo-address-not-configured`.",
            "x-problem-codes": [
              "logo-address-not-configured"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/credentials": {
      "get": {
        "operationId": "credential.list",
        "tags": [
          "credentials"
        ],
        "summary": "De utstedte bevisene",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Markøren fra `Link` på forrige side, nøyaktig som den står.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Rader per side.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ],
        "security": [
          {
            "eidas": [
              "issued-credentials:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Én side, nyeste først.",
            "headers": {
              "Link": {
                "description": "Neste side: `<…?cursor=…&limit=…>; rel=\"next\"`. Mangler på siste side.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IssuedCredentialWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "`limit` er utenfor 1–200, eller markøren er endret eller fra en annen liste. Kode: `malformed-request`, `list-cursor-rejected`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "list-cursor-rejected",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/credentials/notifications": {
      "get": {
        "operationId": "credential.notifications",
        "tags": [
          "credentials"
        ],
        "summary": "Lommebøkenes kvitteringer (OID4VCI §11)",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Markøren fra `Link` på forrige side, nøyaktig som den står.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Rader per side.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ],
        "security": [
          {
            "eidas": [
              "issued-credentials:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Én side, nyeste først.",
            "headers": {
              "Link": {
                "description": "Neste side: `<…?cursor=…&limit=…>; rel=\"next\"`. Mangler på siste side.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WalletNotificationWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "`limit` er utenfor 1–200, eller markøren er endret eller fra en annen liste. Kode: `malformed-request`, `list-cursor-rejected`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "list-cursor-rejected",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/credentials/search": {
      "post": {
        "operationId": "credential.search",
        "tags": [
          "credentials"
        ],
        "summary": "Finn bevis på en opplysning",
        "description": "Virker bare på claims merket `revocationSearchable` i bevistypen.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialSearchRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issued-credentials:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Treffene.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IssuedCredentialWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/credentials/statistics": {
      "get": {
        "operationId": "credential.statistics",
        "tags": [
          "credentials"
        ],
        "summary": "Antall utstedt, tilbaketrukket og suspendert",
        "security": [
          {
            "eidas": [
              "issued-credentials:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialStatisticsWire"
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/credentials/{credentialId}": {
      "parameters": [
        {
          "name": "credentialId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "credential.read",
        "tags": [
          "credentials"
        ],
        "summary": "Ett utstedt bevis",
        "security": [
          {
            "eidas": [
              "issued-credentials:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuedCredentialWire"
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Utstederen har ikke beviset, eller det er ikke ditt. Kode: `issued-credential-not-found`.",
            "x-problem-codes": [
              "issued-credential-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/credentials/{credentialId}/reinstate": {
      "parameters": [
        {
          "name": "credentialId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "credential.reinstate",
        "tags": [
          "credentials"
        ],
        "summary": "Gjenopprett et suspendert bevis",
        "description": "Kroppen kan være `{}`. Et mdoc-bevis kan ikke endre livsløp.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issued-credentials:suspend"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Beviset slik det er nå.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuedCredentialWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `credential-not-found`.",
            "x-problem-codes": [
              "credential-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Beviset er et mdoc. Kode: `credential-not-revocable`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "credential-not-revocable",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/credentials/{credentialId}/revoke": {
      "parameters": [
        {
          "name": "credentialId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "credential.revoke",
        "tags": [
          "credentials"
        ],
        "summary": "Trekk tilbake et bevis",
        "description": "Kroppen kan være `{}`. Et mdoc-bevis kan ikke endre livsløp.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issued-credentials:revoke"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Beviset slik det er nå.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuedCredentialWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `credential-not-found`.",
            "x-problem-codes": [
              "credential-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Beviset er et mdoc. Kode: `credential-not-revocable`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "credential-not-revocable",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/credentials/{credentialId}/suspend": {
      "parameters": [
        {
          "name": "credentialId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "credential.suspend",
        "tags": [
          "credentials"
        ],
        "summary": "Suspender et bevis",
        "description": "Kroppen kan være `{}`. Et mdoc-bevis kan ikke endre livsløp.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issued-credentials:suspend"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Beviset slik det er nå.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuedCredentialWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `credential-not-found`.",
            "x-problem-codes": [
              "credential-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Beviset er et mdoc. Kode: `credential-not-revocable`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "credential-not-revocable",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/events": {
      "get": {
        "operationId": "event.list",
        "tags": [
          "events"
        ],
        "summary": "Hendelsesloggen",
        "parameters": [
          {
            "name": "objectType",
            "in": "query",
            "required": false,
            "description": "Bare hendelser om denne typen objekt, f.eks. `CREDENTIAL`.",
            "schema": {
              "type": "string",
              "enum": [
                "CREDENTIAL_TYPE",
                "CLAIM_SOURCE",
                "AUTH_PROVIDER",
                "ISSUANCE_RULE",
                "CREDENTIAL",
                "CERTIFICATE",
                "MEMBER",
                "INTEGRATION_CLIENT",
                "PLATFORM_SETTING",
                "DEPLOYMENT",
                "ORGANIZATION"
              ]
            }
          },
          {
            "name": "before",
            "in": "query",
            "required": false,
            "description": "Bare hendelser før dette tidspunktet.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Høyst så mange hendelser.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ],
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventPageWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`.",
            "x-problem-codes": [
              "malformed-request"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuance-orders/{orderId}": {
      "parameters": [
        {
          "name": "orderId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "issuanceOrder.read",
        "tags": [
          "issuance-orders"
        ],
        "summary": "Status på en bestilling",
        "security": [
          {
            "eidas": [
              "issued-credentials:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuanceOrderStatusWire"
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuance-order-not-found`.",
            "x-problem-codes": [
              "issuance-order-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuance-orders/{orderId}/claims": {
      "parameters": [
        {
          "name": "orderId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "issuanceOrder.deliverClaims",
        "tags": [
          "issuance-orders"
        ],
        "summary": "Ettersend opplysninger",
        "description": "For en bevistype med `claimsArriveLater: true`.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssuanceOrderClaimsRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuance-orders:place"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Mottatt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimsDeliveryWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen har feil form, eller opplysningene passer ikke bevistypen; `claims` navngir feltene. Kode: `malformed-request`, `issuance-order-claims-unknown`, `issuance-order-claims-mistyped`, `issuance-order-claims-missing`, `issuance-order-format-unsupported`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuance-order-claims-unknown",
              "issuance-order-claims-mistyped",
              "issuance-order-claims-missing",
              "issuance-order-format-unsupported",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuance-order-not-found`.",
            "x-problem-codes": [
              "issuance-order-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Utstederen har ikke et sertifikat den kan signere med; `detail` sier hva du må gjøre. Kode: `issuer-not-ready`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "issuer-not-ready",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuance-rules": {
      "get": {
        "operationId": "issuanceRule.list",
        "tags": [
          "issuance-rules"
        ],
        "summary": "Utstedelsesreglene",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IssuanceRuleWire"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "issuanceRule.create",
        "tags": [
          "issuance-rules"
        ],
        "summary": "Opprett en utstedelsesregel",
        "description": "Regelen sier hvilken utsteder som utsteder hvilken bevistype, og hvordan. Den må publiseres før den kan brukes.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssuanceRuleCreateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuance-rules:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuanceRuleWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`.",
            "x-problem-codes": [
              "malformed-request"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "En id i kroppen finnes ikke. Kode: `issuer-not-found`, `credential-type-not-found`, `auth-provider-not-found`, `verifier-not-found`.",
            "x-problem-codes": [
              "issuer-not-found",
              "credential-type-not-found",
              "auth-provider-not-found",
              "verifier-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Navnet er i bruk. Kode: `issuance-rule-name-conflict`.",
            "x-problem-codes": [
              "issuance-rule-name-conflict"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuance-rules/{issuanceRuleId}": {
      "parameters": [
        {
          "name": "issuanceRuleId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "operationId": "issuanceRule.delete",
        "tags": [
          "issuance-rules"
        ],
        "summary": "Slett en utstedelsesregel",
        "description": "Har regelen gyldige bevis, kreves `leaveCredentialsValid=true`.",
        "parameters": [
          {
            "name": "leaveCredentialsValid",
            "in": "query",
            "required": false,
            "description": "Slett selv om bevis utstedt med regelen fortsatt er gyldige.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "security": [
          {
            "eidas": [
              "issuance-rules:manage"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Utført. Ingen kropp."
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuance-rule-not-found`.",
            "x-problem-codes": [
              "issuance-rule-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Regelen har gyldige bevis; `liveCredentials` sier hvor mange. Kode: `issuance-rule-has-live-credentials`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "issuance-rule-has-live-credentials",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "issuanceRule.read",
        "tags": [
          "issuance-rules"
        ],
        "summary": "Én utstedelsesregel",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuanceRuleWire"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuance-rule-not-found`.",
            "x-problem-codes": [
              "issuance-rule-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "issuanceRule.update",
        "tags": [
          "issuance-rules"
        ],
        "summary": "Endre en utstedelsesregel",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssuanceRuleUpdateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuance-rules:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuanceRuleWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`.",
            "x-problem-codes": [
              "malformed-request"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "`authProviderId` eller `presentationVerifierId` finnes ikke. Kode: `issuance-rule-not-found`, `auth-provider-not-found`, `verifier-not-found`.",
            "x-problem-codes": [
              "issuance-rule-not-found",
              "auth-provider-not-found",
              "verifier-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Navnet er i bruk. Kode: `issuance-rule-name-conflict`.",
            "x-problem-codes": [
              "issuance-rule-name-conflict"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuance-rules/{issuanceRuleId}/deployment": {
      "parameters": [
        {
          "name": "issuanceRuleId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "operationId": "issuanceRule.withdraw",
        "tags": [
          "issuance-rules"
        ],
        "summary": "Avpubliser regelen",
        "security": [
          {
            "eidas": [
              "issuance-rules:manage"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Utført. Ingen kropp."
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuance-rule-not-found`.",
            "x-problem-codes": [
              "issuance-rule-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En lik skriving pågår, eller utstederen er ikke klargjort hos utstedertjenesten. Kode: `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "issuanceRule.deploymentRead",
        "tags": [
          "issuance-rules"
        ],
        "summary": "Er regelen publisert, og er den oppdatert?",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeploymentWire"
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuance-rule-not-found`.",
            "x-problem-codes": [
              "issuance-rule-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "operationId": "issuanceRule.deploy",
        "tags": [
          "issuance-rules"
        ],
        "summary": "Publiser regelen til utstederen",
        "description": "Påkrevd før første bestilling, og etter hver endring i bevistypen. Svaret bærer `vct`.",
        "security": [
          {
            "eidas": [
              "issuance-rules:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Publisert.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeploymentWire"
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuance-rule-not-found`.",
            "x-problem-codes": [
              "issuance-rule-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Utstederen har en annen publisering, vct ville endret seg, eller bevistypens logo kan ikke publiseres (`blockers` på lesingen sier det samme). Kode: `conflicting-deployment`, `deployment-changes-vct`, `issuer-not-provisioned`, `logo-address-not-configured`, `idempotency-in-progress`, `certificate-request-completion-in-progress`.",
            "x-problem-codes": [
              "conflicting-deployment",
              "deployment-changes-vct",
              "issuer-not-provisioned",
              "logo-address-not-configured",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Et språk utenom `nb-NO` mangler navn (`display-names-missing`, `locales`), eller et claim med tekst mangler den på et av bevistypens språk (`claims`, også i det første svaret). Kode: `claim-texts-incomplete`, `display-names-missing`, `presentation-verifier-rejected`.",
            "x-problem-codes": [
              "claim-texts-incomplete",
              "display-names-missing",
              "presentation-verifier-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuance-rules/{issuanceRuleId}/issuance-orders": {
      "parameters": [
        {
          "name": "issuanceRuleId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "issuanceOrder.create",
        "tags": [
          "issuance-rules"
        ],
        "summary": "Bestill et bevis",
        "description": "Gjør `offerUri` til en QR-kode eller lenke for brukeren, som den er. To kall gir to bestillinger.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssuanceOrderRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuance-orders:place"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Bestilt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuanceOrderWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen har feil form, eller opplysningene passer ikke bevistypen; `claims` navngir feltene. Kode: `malformed-request`, `issuance-order-claims-unknown`, `issuance-order-claims-mistyped`, `issuance-order-claims-missing`, `issuance-order-format-unsupported`, `issuance-order-valid-until-rejected`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuance-order-claims-unknown",
              "issuance-order-claims-mistyped",
              "issuance-order-claims-missing",
              "issuance-order-format-unsupported",
              "issuance-order-valid-until-rejected",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuance-rule-not-found`.",
            "x-problem-codes": [
              "issuance-rule-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Regelen er ikke publisert. Kode: `issuance-rule-not-deployed`, `issuer-not-ready`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "issuance-rule-not-deployed",
              "issuer-not-ready",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuer-services": {
      "get": {
        "operationId": "issuerService.list",
        "tags": [
          "issuer-services"
        ],
        "summary": "Utstedertjenestene en utsteder kan legges på",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IssuerServiceWire"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers": {
      "get": {
        "operationId": "issuer.list",
        "tags": [
          "issuers"
        ],
        "summary": "Utstederne",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IssuerWire"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "issuer.create",
        "tags": [
          "issuers"
        ],
        "summary": "Opprett en utsteder",
        "description": "En ny organisasjon har alt en utsteder på den delte tjenesten. Denne trengs bare for en til.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssuerCreateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuers:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuerWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Uten kropp når klienten er avgrenset bort fra det kallet gjelder."
          },
          "409": {
            "description": "Adressen er tatt, eller kvoten er brukt opp. Kode: `issuer-slug-taken`, `quota-exceeded`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "issuer-slug-taken",
              "quota-exceeded",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "operationId": "issuer.delete",
        "tags": [
          "issuers"
        ],
        "summary": "Slett utstederen",
        "description": "Har utstederen gyldige bevis, kreves `confirmRevokeActiveCredentials=true`; da trekkes de tilbake.",
        "parameters": [
          {
            "name": "confirmRevokeActiveCredentials",
            "in": "query",
            "required": false,
            "description": "Trekk tilbake utstederens gyldige bevis og slett.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "security": [
          {
            "eidas": [
              "issuers:manage"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Utført. Ingen kropp."
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Utstederen har gyldige bevis; `activeCredentials` sier hvor mange. Kode: `active-credentials-require-confirmation`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "active-credentials-require-confirmation",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "issuer.read",
        "tags": [
          "issuers"
        ],
        "summary": "Én utsteder",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuerWire"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "issuer.update",
        "tags": [
          "issuers"
        ],
        "summary": "Gi utstederen et nytt navn",
        "description": "Navnet er også det lommeboka viser (`display[0].name` i utstederens metadata), fra neste oppslag og uten en ny publisering. Adressen endres aldri.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssuerUpdateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuers:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuerWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Adressen kan ikke endres. Kode: `issuer-slug-is-immutable`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "issuer-slug-is-immutable",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/access-certificates": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "issuerAccessCertificate.history",
        "tags": [
          "issuers"
        ],
        "summary": "Utstederens tilgangssertifikater",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IssuerAccessCertificateWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Sertifikatet finnes ikke. Kode: `issuer-not-found`, `certificate-not-found`.",
            "x-problem-codes": [
              "issuer-not-found",
              "certificate-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/access-certificates/csr": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "issuerAccessCertificate.csrList",
        "tags": [
          "issuers"
        ],
        "summary": "Ventende CSR-er for utstederens tilgangssertifikat",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IssuerAccessCertificateRequestWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "issuerAccessCertificate.requestCsr",
        "tags": [
          "issuers"
        ],
        "summary": "Lag en CSR for utstederens tilgangssertifikat",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificateRequestRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuer-certificates:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuerAccessCertificateRequestWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Nøkkelen kan ikke brukes, eller nøkkelkilden er ikke tilgjengelig for organisasjonen. Kode: `signing-key-unavailable`, `signing-key-source-unavailable`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `issuer-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/access-certificates/csr/{requestId}/complete": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "requestId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "issuerAccessCertificate.csrComplete",
        "tags": [
          "issuers"
        ],
        "summary": "Fullfør en CSR for utstederens tilgangssertifikat",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificateCompletionRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuer-certificates:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuerAccessCertificateRegistrationWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En fullføring av samme CSR pågår. Kode: `certificate-request-completion-in-progress`, `idempotency-in-progress`, `signing-key-unavailable`, `signing-key-source-unavailable`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "certificate-request-completion-in-progress",
              "idempotency-in-progress",
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Sertifikatet består ikke profilkontrollen; `violations` lister bruddene. Kode: `access-certificate-rejected`.",
            "x-problem-codes": [
              "access-certificate-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `issuer-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/certificates": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "issuerCertificate.history",
        "tags": [
          "issuers"
        ],
        "summary": "Utstederens signeringssertifikater",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IssuerCertificateWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Sertifikatet finnes ikke. Kode: `issuer-not-found`, `certificate-not-found`.",
            "x-problem-codes": [
              "issuer-not-found",
              "certificate-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "issuerCertificate.register",
        "tags": [
          "issuers"
        ],
        "summary": "Registrer et signeringssertifikat",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificateRegistrationRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuer-certificates:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuerCertificateWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Sertifikatet finnes ikke. Kode: `issuer-not-found`, `certificate-not-found`.",
            "x-problem-codes": [
              "issuer-not-found",
              "certificate-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Nøkkelen kan ikke brukes, eller nøkkelkilden er ikke tilgjengelig for organisasjonen. Kode: `signing-key-unavailable`, `signing-key-source-unavailable`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `issuer-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/certificates/csr": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "issuerCertificate.csrList",
        "tags": [
          "issuers"
        ],
        "summary": "Ventende CSR-er for signeringssertifikatet",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SigningCertificateRequestWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "issuerCertificate.requestCsr",
        "tags": [
          "issuers"
        ],
        "summary": "Lag en CSR for signeringssertifikatet",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificateRequestRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuer-certificates:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SigningCertificateRequestWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Nøkkelen kan ikke brukes, eller nøkkelkilden er ikke tilgjengelig for organisasjonen. Kode: `signing-key-unavailable`, `signing-key-source-unavailable`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `issuer-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/certificates/csr/{requestId}/complete": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "requestId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "issuerCertificate.csrComplete",
        "tags": [
          "issuers"
        ],
        "summary": "Fullfør en CSR med sertifikatet fra CA-en",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificateCompletionRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuer-certificates:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuerCertificateWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En fullføring av samme CSR pågår. Kode: `certificate-request-completion-in-progress`, `idempotency-in-progress`, `signing-key-unavailable`, `signing-key-source-unavailable`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "certificate-request-completion-in-progress",
              "idempotency-in-progress",
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `issuer-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/certificates/import": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "issuerCertificate.import",
        "tags": [
          "issuers"
        ],
        "summary": "Importer nøkkel og sertifikat",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyImportRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuer-certificates:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuerCertificateWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Nøkkelen kan ikke brukes, eller nøkkelkilden er ikke tilgjengelig for organisasjonen. Kode: `signing-key-unavailable`, `signing-key-source-unavailable`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `issuer-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/certificates/platform-default": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "issuerCertificate.platformDefault",
        "tags": [
          "issuers"
        ],
        "summary": "Bruk Kantegas sandkassesertifikat",
        "description": "For utprøving i DigDirs sandkasse. Gjør dette før første utstedelse. Kan kjøres flere ganger.",
        "security": [
          {
            "eidas": [
              "issuer-certificates:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuerCertificateWire"
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Nøkkelen kan ikke brukes, eller nøkkelkilden er ikke tilgjengelig for organisasjonen. Kode: `signing-key-unavailable`, `signing-key-source-unavailable`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `issuer-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/certificates/revoke-active": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "issuerCertificate.revokeActive",
        "tags": [
          "issuers"
        ],
        "summary": "Trekk tilbake det aktive signeringssertifikatet",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuer-certificates:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActiveCertificateRevocationWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En lik skriving pågår, eller utstederen er ikke klargjort hos utstedertjenesten. Kode: `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/certificates/rotate": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "issuerCertificate.rotate",
        "tags": [
          "issuers"
        ],
        "summary": "Roter signeringssertifikatet",
        "security": [
          {
            "eidas": [
              "issuer-certificates:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuerCertificateWire"
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Nøkkelen kan ikke brukes, eller nøkkelkilden er ikke tilgjengelig for organisasjonen. Kode: `signing-key-unavailable`, `signing-key-source-unavailable`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `issuer-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/certificates/trust": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "issuerCertificate.trust",
        "tags": [
          "issuers"
        ],
        "summary": "Ender det aktive sertifikatet i et tillitsanker?",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CertificateTrustWire"
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`, `verifier-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable",
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/certificates/upload": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "issuerCertificate.upload",
        "tags": [
          "issuers"
        ],
        "summary": "Last opp et signeringssertifikat",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificateRegistrationRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuer-certificates:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuerCertificateWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Sertifikatet finnes ikke. Kode: `issuer-not-found`, `certificate-not-found`.",
            "x-problem-codes": [
              "issuer-not-found",
              "certificate-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Nøkkelen kan ikke brukes, eller nøkkelkilden er ikke tilgjengelig for organisasjonen. Kode: `signing-key-unavailable`, `signing-key-source-unavailable`, `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `issuer-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/certificates/{certificateId}/revoke": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "certificateId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "issuerCertificate.revoke",
        "tags": [
          "issuers"
        ],
        "summary": "Trekk tilbake et signeringssertifikat",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReasonRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "issuer-certificates:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CertificateRevocationWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `issuer-service-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Sertifikatet finnes ikke. Kode: `issuer-not-found`, `certificate-not-found`.",
            "x-problem-codes": [
              "issuer-not-found",
              "certificate-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En lik skriving pågår, eller utstederen er ikke klargjort hos utstedertjenesten. Kode: `idempotency-in-progress`, `certificate-request-completion-in-progress`, `issuer-not-provisioned`.",
            "x-problem-codes": [
              "idempotency-in-progress",
              "certificate-request-completion-in-progress",
              "issuer-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/issuers/{issuerId}/credential-tally": {
      "parameters": [
        {
          "name": "issuerId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "issuer.credentialTally",
        "tags": [
          "issuers"
        ],
        "summary": "Hvor mange bevis utstederen har utstedt",
        "security": [
          {
            "eidas": [
              "issuance-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialTallyWire"
                }
              }
            }
          },
          "400": {
            "description": "Utstedertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `issuer-service-rejected`.",
            "x-problem-codes": [
              "issuer-service-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `issuer-not-found`.",
            "x-problem-codes": [
              "issuer-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Utstedertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `issuer-service-unavailable`.",
            "x-problem-codes": [
              "issuer-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/me": {
      "get": {
        "operationId": "getV1Me",
        "tags": [
          "me"
        ],
        "summary": "Hvem kalleren er, og tilgangene tokenet har",
        "security": [
          {
            "eidas": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeWire"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/organization": {
      "get": {
        "operationId": "organization.read",
        "tags": [
          "organization"
        ],
        "summary": "Organisasjonen",
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationWire"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `organization-not-found`.",
            "x-problem-codes": [
              "organization-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/organization/features": {
      "get": {
        "operationId": "organizationFeature.read",
        "tags": [
          "organization"
        ],
        "summary": "Funksjonene som er slått på",
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FeatureStateWire"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `organization-not-found`.",
            "x-problem-codes": [
              "organization-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/organization/signing-key-sources": {
      "get": {
        "operationId": "organization.keySources",
        "tags": [
          "organization"
        ],
        "summary": "Hvor organisasjonens signeringsnøkler kommer fra",
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SigningKeySourcesWire"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `organization-not-found`.",
            "x-problem-codes": [
              "organization-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/organization/synthetic-context": {
      "get": {
        "operationId": "organization.syntheticContext",
        "tags": [
          "organization"
        ],
        "summary": "Organisasjonens serverstyrte syntetiske klassifisering",
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SyntheticContextWire"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `organization-not-found`.",
            "x-problem-codes": [
              "organization-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/product-updates": {
      "get": {
        "operationId": "productUpdate.list",
        "tags": [
          "product-updates"
        ],
        "summary": "Nyhetene fra Kantega",
        "security": [
          {
            "eidas": [
              "organization-overview:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductUpdateWire"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verification-rules": {
      "get": {
        "operationId": "verificationRule.list",
        "tags": [
          "verification-rules"
        ],
        "summary": "Verifiseringsreglene",
        "security": [
          {
            "eidas": [
              "verification-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VerificationRuleWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Verifiertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `verification-rule-rejected`.",
            "x-problem-codes": [
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "verificationRule.create",
        "tags": [
          "verification-rules"
        ],
        "summary": "Opprett en verifiseringsregel",
        "description": "Regelen sier hva du spør lommeboka om. Be om `vct` fra publiseringen.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerificationRuleCreateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "verification-rules:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationRuleWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "`verifierId` finnes ikke. Kode: `verifier-not-found`.",
            "x-problem-codes": [
              "verifier-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En lik skriving pågår, eller verifieren er ikke klargjort hos verifiertjenesten. Kode: `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verification-rules/{verificationRuleId}": {
      "parameters": [
        {
          "name": "verificationRuleId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "operationId": "verificationRule.delete",
        "tags": [
          "verification-rules"
        ],
        "summary": "Slett en verifiseringsregel",
        "description": "Verifiseringene som er startet med regelen, og resultatene deres, slettes sammen med den — også en verifisering som pågår.",
        "security": [
          {
            "eidas": [
              "verification-rules:manage"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Utført. Ingen kropp."
          },
          "400": {
            "description": "Verifiertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `verification-rule-rejected`.",
            "x-problem-codes": [
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verification-rule-not-found`.",
            "x-problem-codes": [
              "verification-rule-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En lik skriving pågår, eller verifieren er ikke klargjort hos verifiertjenesten. Kode: `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "verificationRule.read",
        "tags": [
          "verification-rules"
        ],
        "summary": "Én verifiseringsregel",
        "security": [
          {
            "eidas": [
              "verification-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationRuleWire"
                }
              }
            }
          },
          "400": {
            "description": "Verifiertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `verification-rule-rejected`.",
            "x-problem-codes": [
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verification-rule-not-found`.",
            "x-problem-codes": [
              "verification-rule-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "verificationRule.update",
        "tags": [
          "verification-rules"
        ],
        "summary": "Endre en verifiseringsregel",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerificationRuleUpdateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "verification-rules:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationRuleWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verification-rule-not-found`.",
            "x-problem-codes": [
              "verification-rule-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En lik skriving pågår, eller verifieren er ikke klargjort hos verifiertjenesten. Kode: `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verification-sessions": {
      "get": {
        "operationId": "verificationSession.list",
        "tags": [
          "verification-sessions"
        ],
        "summary": "Verifiseringene",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Markøren fra `Link` på forrige side, nøyaktig som den står.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Rader per side.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ],
        "security": [
          {
            "eidas": [
              "verification-results:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Én side, nyeste først.",
            "headers": {
              "Link": {
                "description": "Neste side: `<…?cursor=…&limit=…>; rel=\"next\"`. Mangler på siste side.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VerificationSessionWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "`limit` er utenfor 1–200, eller markøren er endret eller fra en annen liste. Kode: `malformed-request`, `list-cursor-rejected`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "list-cursor-rejected",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "verificationSession.start",
        "tags": [
          "verification-sessions"
        ],
        "summary": "Start en verifisering",
        "description": "Lenka til lommeboka er `openid4vp://?client_id=<clientId>&request_uri=<requestUri>`, begge URL-kodet.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerificationSessionRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "verification-sessions:start"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Startet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartedVerificationSessionWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verification-rule-not-found`.",
            "x-problem-codes": [
              "verification-rule-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Verifieren har ikke et aktivt tilgangssertifikat. Kode: `verifier-not-ready`, `idempotency-in-progress`, `verifier-not-provisioned`.",
            "x-problem-codes": [
              "verifier-not-ready",
              "idempotency-in-progress",
              "verifier-not-provisioned"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verification-sessions/{verificationSessionId}": {
      "parameters": [
        {
          "name": "verificationSessionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "verificationSession.read",
        "tags": [
          "verification-sessions"
        ],
        "summary": "Hvor langt en verifisering er kommet",
        "security": [
          {
            "eidas": [
              "verification-results:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationSessionWire"
                }
              }
            }
          },
          "400": {
            "description": "Verifiertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `verification-rule-rejected`.",
            "x-problem-codes": [
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verification-session-not-found`.",
            "x-problem-codes": [
              "verification-session-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verification-sessions/{verificationSessionId}/result": {
      "parameters": [
        {
          "name": "verificationSessionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "verificationResult.read",
        "tags": [
          "verification-sessions"
        ],
        "summary": "Resultatet av en verifisering",
        "description": "Svarer 404 til sesjonen er avgjort (`VERIFIED`, `REJECTED` eller `EXPIRED`). Ble verifiseringen startet med `continuationUri`, kan resultatet bare leses med `response_code` første gang; uten den, eller med feil kode, er svaret 403 `response-code-required`.",
        "parameters": [
          {
            "name": "response_code",
            "in": "query",
            "required": false,
            "description": "Koden lommeboka ga brukeren tilbake med i samme-enhets-flyten (OID4VP 1.0 §8.2). Påkrevd første gang resultatet til en verifisering startet med `continuationUri` leses.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "eidas": [
              "verification-results:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationResultWire"
                }
              }
            }
          },
          "400": {
            "description": "Verifiertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `verification-rule-rejected`.",
            "x-problem-codes": [
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "description": "Verifiseringen ble startet med `continuationUri`, og `response_code` manglet eller var feil. Kode: `permission-required`, `response-code-required`.",
            "x-problem-codes": [
              "permission-required",
              "response-code-required"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verification-session-not-found`.",
            "x-problem-codes": [
              "verification-session-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verifier-services": {
      "get": {
        "operationId": "verifierService.list",
        "tags": [
          "verifier-services"
        ],
        "summary": "Verifiertjenestene en verifier kan legges på",
        "security": [
          {
            "eidas": [
              "verification-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VerifierServiceWire"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verifiers": {
      "get": {
        "operationId": "verifier.list",
        "tags": [
          "verifiers"
        ],
        "summary": "Verifierne",
        "security": [
          {
            "eidas": [
              "verification-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VerifierWire"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "verifier.create",
        "tags": [
          "verifiers"
        ],
        "summary": "Opprett en verifier",
        "description": "En ny organisasjon har alt en verifier på den delte tjenesten. Denne trengs bare for en til.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifierCreateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "verifiers:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifierWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Uten kropp når klienten er avgrenset bort fra det kallet gjelder."
          },
          "409": {
            "description": "En lik skriving pågår, eller verifieren er ikke klargjort hos verifiertjenesten. Kode: `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verifiers/{verifierId}": {
      "parameters": [
        {
          "name": "verifierId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "operationId": "verifier.delete",
        "tags": [
          "verifiers"
        ],
        "summary": "Slett verifieren",
        "security": [
          {
            "eidas": [
              "verifiers:manage"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Utført. Ingen kropp."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verifier-not-found`.",
            "x-problem-codes": [
              "verifier-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "get": {
        "operationId": "verifier.read",
        "tags": [
          "verifiers"
        ],
        "summary": "Én verifier",
        "security": [
          {
            "eidas": [
              "verification-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifierWire"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verifier-not-found`.",
            "x-problem-codes": [
              "verifier-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "operationId": "verifier.update",
        "tags": [
          "verifiers"
        ],
        "summary": "Gi verifieren et nytt navn",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifierUpdateRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "verifiers:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifierWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verifier-not-found`.",
            "x-problem-codes": [
              "verifier-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En lik skriving pågår, eller verifieren er ikke klargjort hos verifiertjenesten. Kode: `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verifiers/{verifierId}/access-certificates": {
      "parameters": [
        {
          "name": "verifierId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "accessCertificate.register",
        "tags": [
          "verifiers"
        ],
        "summary": "Registrer et tilgangssertifikat",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccessCertificateRegistrationRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "verifier-access-certificates:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessCertificateRegistrationWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Sertifikatet finnes ikke. Kode: `verifier-not-found`, `access-certificate-not-found`.",
            "x-problem-codes": [
              "verifier-not-found",
              "access-certificate-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Nøkkelen kan ikke brukes, eller nøkkelkilden er ikke tilgjengelig for organisasjonen. Kode: `signing-key-unavailable`, `signing-key-source-unavailable`, `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Sertifikatet består ikke profilkontrollen; `violations` lister bruddene. Kode: `access-certificate-rejected`.",
            "x-problem-codes": [
              "access-certificate-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `verifier-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verifiers/{verifierId}/access-certificates/csr": {
      "parameters": [
        {
          "name": "verifierId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "accessCertificate.csrList",
        "tags": [
          "verifiers"
        ],
        "summary": "Ventende CSR-er for tilgangssertifikatet",
        "security": [
          {
            "eidas": [
              "verification-setup:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VerifierAccessCertificateRequestWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Verifiertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `verification-rule-rejected`.",
            "x-problem-codes": [
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verifier-not-found`.",
            "x-problem-codes": [
              "verifier-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "operationId": "accessCertificate.requestCsr",
        "tags": [
          "verifiers"
        ],
        "summary": "Lag en CSR for tilgangssertifikatet",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificateRequestRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "verifier-access-certificates:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifierAccessCertificateRequestWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verifier-not-found`.",
            "x-problem-codes": [
              "verifier-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Nøkkelen kan ikke brukes, eller nøkkelkilden er ikke tilgjengelig for organisasjonen. Kode: `signing-key-unavailable`, `signing-key-source-unavailable`, `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `verifier-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verifiers/{verifierId}/access-certificates/csr/{requestId}/complete": {
      "parameters": [
        {
          "name": "verifierId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "requestId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "accessCertificate.csrComplete",
        "tags": [
          "verifiers"
        ],
        "summary": "Fullfør en CSR for tilgangssertifikatet",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificateCompletionRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "verifier-access-certificates:manage"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessCertificateRegistrationWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verifier-not-found`.",
            "x-problem-codes": [
              "verifier-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "En fullføring av samme CSR pågår. Kode: `certificate-request-completion-in-progress`, `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "certificate-request-completion-in-progress",
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Sertifikatet består ikke profilkontrollen; `violations` lister bruddene. Kode: `access-certificate-rejected`.",
            "x-problem-codes": [
              "access-certificate-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verifiers/{verifierId}/access-certificates/import": {
      "parameters": [
        {
          "name": "verifierId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "accessCertificate.import",
        "tags": [
          "verifiers"
        ],
        "summary": "Importer nøkkel og tilgangssertifikat",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyImportRequest"
              }
            }
          }
        },
        "security": [
          {
            "eidas": [
              "verifier-access-certificates:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Opprettet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessCertificateRegistrationWire"
                }
              }
            }
          },
          "400": {
            "description": "Kroppen eller en parameter har feil form. Kode: `malformed-request`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Sertifikatet finnes ikke. Kode: `verifier-not-found`, `access-certificate-not-found`.",
            "x-problem-codes": [
              "verifier-not-found",
              "access-certificate-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Nøkkelen kan ikke brukes, eller nøkkelkilden er ikke tilgjengelig for organisasjonen. Kode: `signing-key-unavailable`, `signing-key-source-unavailable`, `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Sertifikatet består ikke profilkontrollen; `violations` lister bruddene. Kode: `access-certificate-rejected`.",
            "x-problem-codes": [
              "access-certificate-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `verifier-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/verifiers/{verifierId}/access-certificates/platform-default": {
      "parameters": [
        {
          "name": "verifierId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "operationId": "accessCertificate.platformDefault",
        "tags": [
          "verifiers"
        ],
        "summary": "Bruk Kantegas sandkassesertifikat",
        "description": "For utprøving i DigDirs sandkasse. Gjør dette før første verifisering. Kan kjøres flere ganger.",
        "security": [
          {
            "eidas": [
              "verifier-access-certificates:manage"
            ]
          }
        ],
        "responses": {
          "201": {
            "description": "Tatt i bruk.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessCertificateRegistrationWire"
                }
              }
            }
          },
          "400": {
            "description": "Verifiertjenesten avviste forespørselen; `detail` sier hvorfor. Kode: `verification-rule-rejected`.",
            "x-problem-codes": [
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Finnes ikke, eller tilhører en annen organisasjon. Kode: `verifier-not-found`.",
            "x-problem-codes": [
              "verifier-not-found"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "409": {
            "description": "Nøkkelen kan ikke brukes, eller nøkkelkilden er ikke tilgjengelig for organisasjonen. Kode: `signing-key-unavailable`, `signing-key-source-unavailable`, `idempotency-in-progress`, `verifier-not-provisioned`, `verifier-not-ready`.",
            "x-problem-codes": [
              "signing-key-unavailable",
              "signing-key-source-unavailable",
              "idempotency-in-progress",
              "verifier-not-provisioned",
              "verifier-not-ready"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "502": {
            "description": "Organisasjonen kunne ikke registreres i signeringstjenesten. Kode: `signing-tenant-registration-failed`, `verifier-service-unavailable`.",
            "x-problem-codes": [
              "signing-tenant-registration-failed",
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "504": {
            "description": "Skrivingen gikk ut på tid; utfallet er ukjent. Kode: `outcome-unknown`.",
            "x-problem-codes": [
              "outcome-unknown"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v1/webhook-deliveries": {
      "get": {
        "operationId": "webhookDelivery.list",
        "tags": [
          "webhook-deliveries"
        ],
        "summary": "Webhook-leveransene",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Markøren fra `Link` på forrige side, nøyaktig som den står.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Rader per side.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ],
        "security": [
          {
            "eidas": [
              "verification-results:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Én side, nyeste først.",
            "headers": {
              "Link": {
                "description": "Neste side: `<…?cursor=…&limit=…>; rel=\"next\"`. Mangler på siste side.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookDeliveryWire"
                  }
                }
              }
            }
          },
          "400": {
            "description": "`limit` er utenfor 1–200, eller markøren er endret eller fra en annen liste. Kode: `malformed-request`, `list-cursor-rejected`, `verification-rule-rejected`.",
            "x-problem-codes": [
              "malformed-request",
              "list-cursor-rejected",
              "verification-rule-rejected"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "502": {
            "description": "Verifiertjenesten svarte ikke, eller svarte noe vi ikke kunne bruke. Kode: `verifier-service-unavailable`.",
            "x-problem-codes": [
              "verifier-service-unavailable"
            ],
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": ".well-known"
    },
    {
      "name": "access-certificates"
    },
    {
      "name": "auth-providers"
    },
    {
      "name": "claim-sources"
    },
    {
      "name": "credential-types"
    },
    {
      "name": "credentials"
    },
    {
      "name": "events"
    },
    {
      "name": "issuance-orders"
    },
    {
      "name": "issuance-rules"
    },
    {
      "name": "issuer-services"
    },
    {
      "name": "issuers"
    },
    {
      "name": "me"
    },
    {
      "name": "oauth"
    },
    {
      "name": "organization"
    },
    {
      "name": "product-updates"
    },
    {
      "name": "verification-rules"
    },
    {
      "name": "verification-sessions"
    },
    {
      "name": "verifier-services"
    },
    {
      "name": "verifiers"
    },
    {
      "name": "webhook-deliveries"
    }
  ],
  "components": {
    "securitySchemes": {
      "eidas": {
        "type": "oauth2",
        "description": "Klientlegitimasjon (RFC 6749 §4.4) med `client_id` og `client_secret`. Tokenet sendes som `Authorization: Bearer`. Det er en JWT etter RFC 9068 (`typ: at+jwt`) og RFC 8725. Behandle det som ugjennomsiktig, og hent et nytt når `expires_in` har gått ut.",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.kantega.id/oauth/token",
            "scopes": {
              "auth-providers:manage": "Forvalte identitetsleverandører.",
              "claim-sources:manage": "Forvalte opplysningskilder.",
              "credential-types:manage": "Forvalte bevistyper.",
              "issuance-orders:place": "Bestille bevis.",
              "issuance-rules:manage": "Forvalte og publisere utstedelsesregler.",
              "issuance-setup:read": "Se utstedere, regler og sertifikater.",
              "issued-credentials:read": "Se bestillinger og utstedte bevis.",
              "issued-credentials:revoke": "Trekke tilbake bevis.",
              "issued-credentials:suspend": "Suspendere og gjenopprette bevis.",
              "issuer-certificates:manage": "Forvalte utstederens sertifikater.",
              "issuers:manage": "Forvalte utstedere.",
              "organization-overview:read": "Se organisasjonen.",
              "verification-results:read": "Se verifiseringer, resultater og webhook-leveranser.",
              "verification-rules:manage": "Forvalte verifiseringsregler.",
              "verification-sessions:start": "Starte verifisering.",
              "verification-setup:read": "Se verifiere, regler og tilgangssertifikater.",
              "verifier-access-certificates:manage": "Forvalte verifierens tilgangssertifikat.",
              "verifiers:manage": "Forvalte verifiere."
            }
          }
        }
      }
    },
    "responses": {
      "Unauthorized": {
        "description": "Tokenet mangler, er utløpt eller er ugyldig. Kode: `unauthenticated`.",
        "x-problem-codes": [
          "unauthenticated"
        ],
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },
      "Forbidden": {
        "description": "Tokenet mangler tilgangen; `scope` i kroppen navngir den. Kode: `permission-required`.",
        "x-problem-codes": [
          "permission-required"
        ],
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },
      "Error": {
        "description": "Feil på tjenestesiden (5xx), som RFC 7807-kropp.",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      }
    },
    "schemas": {
      "Problem": {
        "type": "object",
        "description": "RFC 7807. `type` slutter på feilkoden klienten forgrener på, f.eks. `https://problem.kantega.no/eidas/malformed-request`.",
        "properties": {
          "type": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "minimum": 100,
            "maximum": 599
          },
          "detail": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "title",
          "status"
        ],
        "additionalProperties": {
          "description": "Utvidelsesfelter som hører til koden, f.eks. `scope` eller `claims`."
        }
      },
      "ACCESS_STATE_INTEGRATION_CLIENT_ACCESS": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "INTEGRATION_CLIENT_ACCESS"
          },
          "allowedScopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "restriction": {
            "$ref": "#/components/schemas/RestrictionWire"
          },
          "endsAt": {
            "format": "date-time",
            "description": "Klientens sluttdato. `null` = ingen.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "kind",
          "allowedScopes",
          "restriction",
          "endsAt"
        ]
      },
      "ACCESS_STATE_MEMBER_ACCESS": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "MEMBER_ACCESS"
          },
          "role": {
            "type": "string",
            "enum": [
              "ADMINISTRATOR",
              "CONTRIBUTOR"
            ]
          }
        },
        "required": [
          "kind",
          "role"
        ]
      },
      "AccessCertificateRegistrationRequest": {
        "type": "object",
        "properties": {
          "certificatePem": {
            "type": "string"
          },
          "chainPem": {
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "keyRef": {
            "type": [
              "string",
              "null"
            ]
          },
          "requestId": {
            "description": "CSR-en sertifikatet svarer på.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "certificatePem"
        ]
      },
      "AccessCertificateRegistrationWire": {
        "type": "object",
        "properties": {
          "certificate": {
            "$ref": "#/components/schemas/AccessCertificateWire"
          },
          "selfSigned": {
            "type": "boolean"
          },
          "advisories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RegistrationAdvisoryWire"
            }
          },
          "profileAdvisories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CertificateFindingWire"
            }
          }
        },
        "required": [
          "certificate",
          "selfSigned",
          "advisories",
          "profileAdvisories"
        ]
      },
      "AccessCertificateSubjectWire": {
        "type": "object",
        "properties": {
          "organizationName": {
            "type": [
              "string",
              "null"
            ]
          },
          "organizationIdentifier": {
            "type": [
              "string",
              "null"
            ]
          },
          "commonName": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "organizationName",
          "organizationIdentifier",
          "commonName",
          "country"
        ]
      },
      "AccessCertificateWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "verifierId": {
            "type": "string",
            "format": "uuid"
          },
          "keyRef": {
            "type": "string"
          },
          "keyUsable": {
            "type": "boolean"
          },
          "keyUnusableReason": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "RETIRED",
              "REVOKED"
            ]
          },
          "fingerprint": {
            "type": "string",
            "description": "SHA-256 av sertifikatet, base64url uten utfylling."
          },
          "clientId": {
            "type": "string",
            "description": "OID4VP `client_id` lommeboka ser, `x509_hash:…`."
          },
          "subject": {
            "$ref": "#/components/schemas/AccessCertificateSubjectWire"
          },
          "notBefore": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "notAfter": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "provenance": {
            "type": "string",
            "enum": [
              "UPLOADED",
              "PLATFORM_DEFAULT",
              "REGISTERED"
            ]
          },
          "chain": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "trustChain": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrustChainLinkWire"
            }
          },
          "profile": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CertificateProfileWire",
                "description": "Profilkontrollen. Bare i lista."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "verifierId",
          "keyRef",
          "keyUsable",
          "status",
          "fingerprint",
          "clientId",
          "subject",
          "notBefore",
          "notAfter",
          "provenance",
          "chain",
          "trustChain"
        ]
      },
      "AccessStateWire": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ACCESS_STATE_INTEGRATION_CLIENT_ACCESS"
          },
          {
            "$ref": "#/components/schemas/ACCESS_STATE_MEMBER_ACCESS"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "INTEGRATION_CLIENT_ACCESS": "#/components/schemas/ACCESS_STATE_INTEGRATION_CLIENT_ACCESS",
            "MEMBER_ACCESS": "#/components/schemas/ACCESS_STATE_MEMBER_ACCESS"
          }
        }
      },
      "ActiveCertificateRevocationWire": {
        "type": "object",
        "properties": {
          "revoked": {
            "type": "boolean"
          }
        },
        "required": [
          "revoked"
        ]
      },
      "AuthProviderCreateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Navnet i kontrollflata."
          },
          "issuerUrl": {
            "type": "string",
            "description": "OpenID Connect-utstederen, https uten spørring."
          },
          "clientId": {
            "type": "string"
          },
          "clientSecret": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "issuerUrl",
          "clientId",
          "clientSecret"
        ]
      },
      "AuthProviderUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "issuerUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "clientId": {
            "type": [
              "string",
              "null"
            ]
          },
          "clientSecret": {
            "description": "Utelatt beholder den lagrede hemmeligheten.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": []
      },
      "AuthProviderWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "issuerUrl": {
            "type": "string"
          },
          "clientId": {
            "type": "string"
          },
          "hasClientSecret": {
            "type": "boolean",
            "description": "Flatene svarer bare AT en hemmelighet finnes, aldri hva den er."
          }
        },
        "required": [
          "id",
          "name",
          "issuerUrl",
          "clientId",
          "hasClientSecret"
        ]
      },
      "AuthorizationServerMetadataWire": {
        "type": "object",
        "properties": {
          "issuer": {
            "type": "string"
          },
          "token_endpoint": {
            "type": "string"
          },
          "jwks_uri": {
            "type": "string"
          },
          "scopes_supported": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "resources_supported": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "grant_types_supported": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "token_endpoint_auth_methods_supported": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "issuer",
          "token_endpoint",
          "jwks_uri",
          "scopes_supported",
          "resources_supported",
          "grant_types_supported",
          "token_endpoint_auth_methods_supported"
        ]
      },
      "CREDENTIAL_TYPE_ORIGIN_AUTHORED": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "AUTHORED"
          }
        },
        "required": [
          "kind"
        ]
      },
      "CREDENTIAL_TYPE_ORIGIN_COPIED_FROM_RULEBOOK": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "COPIED_FROM_RULEBOOK"
          },
          "rulebookSource": {
            "type": "string",
            "enum": [
              "DIGDIR",
              "EU"
            ]
          },
          "rulebookIdentifier": {
            "type": "string"
          },
          "rulebookVersion": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "rulebookSource",
          "rulebookIdentifier",
          "rulebookVersion"
        ]
      },
      "CertificateCompletionRequest": {
        "type": "object",
        "properties": {
          "certificatePem": {
            "type": "string"
          },
          "chainPem": {
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "required": [
          "certificatePem"
        ]
      },
      "CertificateFindingWire": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Stabil kode, f.eks. `access-certificate-expired`."
          },
          "detail": {
            "type": "string"
          },
          "source": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "detail",
          "source"
        ]
      },
      "CertificateHandoffWire": {
        "type": "object",
        "properties": {
          "instructions": {
            "type": "string"
          },
          "portalUrl": {
            "format": "uri",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "instructions"
        ]
      },
      "CertificateProfileWire": {
        "type": "object",
        "properties": {
          "checked": {
            "type": "boolean",
            "description": "`false` for sertifikater som ikke er aktive; listene er da tomme."
          },
          "violations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CertificateFindingWire"
            }
          },
          "advisories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CertificateFindingWire"
            }
          }
        },
        "required": [
          "checked",
          "violations",
          "advisories"
        ]
      },
      "CertificateRegistrationRequest": {
        "type": "object",
        "properties": {
          "certificatePem": {
            "type": "string"
          },
          "chainPem": {
            "items": {
              "type": "string"
            },
            "description": "Kjeden som PEM, bladet først.",
            "type": [
              "array",
              "null"
            ]
          },
          "keyRef": {
            "description": "En nøkkel du alt har i signeringstjenesten.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "certificatePem"
        ]
      },
      "CertificateRequestRequest": {
        "type": "object",
        "properties": {
          "subjectDn": {
            "type": "string",
            "description": "Subject, f.eks. `CN=Kantega AS, O=Kantega AS, C=NO`."
          },
          "subjectAlternativeNames": {
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "required": [
          "subjectDn"
        ]
      },
      "CertificateRevocationWire": {
        "type": "object",
        "properties": {
          "certificateId": {
            "type": "string"
          },
          "revoked": {
            "type": "boolean"
          }
        },
        "required": [
          "certificateId",
          "revoked"
        ]
      },
      "CertificateTrustWire": {
        "type": "object",
        "properties": {
          "verdict": {
            "type": "string",
            "enum": [
              "ANCHORED",
              "UNANCHORED",
              "NOT_CONFIGURED"
            ]
          },
          "anchor": {
            "description": "Tillitsankeret kjeden endte i. Bare ved `ANCHORED`.",
            "type": [
              "string",
              "null"
            ]
          },
          "detail": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "verdict"
        ]
      },
      "ClaimConstraintWire": {
        "type": "object",
        "properties": {
          "credentialId": {
            "type": "string",
            "description": "DCQL-`id`-en til beviset i `query` kravet gjelder."
          },
          "path": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Claim-stien, bare nøkler (OID4VP 1.0 §7)."
          },
          "op": {
            "type": "string",
            "enum": [
              "NOT_AFTER_NOW",
              "NOT_BEFORE_NOW"
            ]
          }
        },
        "required": [
          "credentialId",
          "path",
          "op"
        ]
      },
      "ClaimMappingRequest": {
        "type": "object",
        "properties": {
          "sourceVct": {
            "type": "string"
          },
          "sourceClaim": {
            "type": "string"
          },
          "targetClaim": {
            "type": "string"
          },
          "required": {
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "sourceVct",
          "sourceClaim",
          "targetClaim"
        ]
      },
      "ClaimMappingWire": {
        "type": "object",
        "properties": {
          "sourceVct": {
            "type": "string"
          },
          "sourceClaim": {
            "type": "string"
          },
          "targetClaim": {
            "type": "string"
          },
          "required": {
            "type": "boolean"
          }
        },
        "required": [
          "sourceVct",
          "sourceClaim",
          "targetClaim",
          "required"
        ]
      },
      "ClaimRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Navnet i beviset, f.eks. `member_number`."
          },
          "dataType": {
            "type": "string",
            "enum": [
              "STRING",
              "NUMBER",
              "BOOLEAN",
              "DATE",
              "IMAGE"
            ]
          },
          "mandatory": {
            "type": "boolean"
          },
          "selectivelyDisclosable": {
            "description": "Utelatt = `true`.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "revocationSearchable": {
            "description": "`true` gjør at beviset kan finnes igjen på denne verdien (`POST /v1/credentials/search`). Utelatt = `false`.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "displayName": {
            "description": "Teksten lommeboka viser på `nb-NO`. Høyst 200 tegn. Uten `texts` endres bare `nb-NO`, og andre språk beholdes.",
            "type": [
              "string",
              "null"
            ]
          },
          "texts": {
            "items": {
              "$ref": "#/components/schemas/ClaimTextRequest"
            },
            "description": "Tekstene per språk. Oppgitt erstatter de alle, og må være enig med `displayName` om `nb-NO`. Hvert claim med tekst må ha den på alle bevistypens språk før det kan publiseres.",
            "type": [
              "array",
              "null"
            ]
          }
        },
        "required": [
          "name",
          "dataType"
        ]
      },
      "ClaimSourceCreateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "https-adresse, med høyst én `{plassholder}` i stien."
          },
          "parameters": {
            "items": {
              "type": "string"
            },
            "description": "Claims kilden svarer med.",
            "type": [
              "array",
              "null"
            ]
          },
          "apiKey": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "url",
          "apiKey"
        ]
      },
      "ClaimSourceUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "parameters": {
            "items": {
              "type": "string"
            },
            "description": "Erstatter lista.",
            "type": [
              "array",
              "null"
            ]
          },
          "apiKey": {
            "description": "Utelatt beholder den lagrede nøkkelen.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": []
      },
      "ClaimSourceWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "parameters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hasApiKey": {
            "type": "boolean",
            "description": "Flatene svarer bare AT en noekkel finnes, aldri hva den er."
          }
        },
        "required": [
          "id",
          "name",
          "url",
          "parameters",
          "hasApiKey"
        ]
      },
      "ClaimTextRequest": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "description": "BCP 47-språktagg, f.eks. `nb-NO` eller `en`. Ett språk én gang."
          },
          "label": {
            "type": "string",
            "description": "Høyst 200 tegn."
          },
          "description": {
            "description": "Vises bare i typemetadataene (SD-JWT VC); OID4VCI har ikke feltet. Høyst 500 tegn.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "locale",
          "label"
        ]
      },
      "ClaimTextWire": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "locale",
          "label",
          "description"
        ]
      },
      "ClaimWire": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "dataType": {
            "type": "string",
            "enum": [
              "STRING",
              "NUMBER",
              "BOOLEAN",
              "DATE",
              "IMAGE"
            ]
          },
          "mandatory": {
            "type": "boolean"
          },
          "selectivelyDisclosable": {
            "type": "boolean"
          },
          "revocationSearchable": {
            "type": "boolean"
          },
          "displayName": {
            "description": "Opplysningen slik lommeboka viser den («Fødselsnummer», ikke `fodselsnummer`). Publiseres til utstederens metadata som `display[].name` (OID4VCI 1.0 §12.2.4). `null` = ingen tekst, og lommeboka viser navnet. Tom streng lagres som `null`; høyst 200 tegn.",
            "type": [
              "string",
              "null"
            ]
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClaimTextWire"
            },
            "description": "Tekstene per språk; `displayName` er `nb-NO`-etiketten, eller `null` uten den."
          }
        },
        "required": [
          "name",
          "dataType",
          "mandatory",
          "selectivelyDisclosable",
          "revocationSearchable"
        ]
      },
      "ClaimsDeliveryWire": {
        "type": "object",
        "properties": {
          "delivered": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "outstandingRequired": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "delivered",
          "outstandingRequired"
        ]
      },
      "CredentialSearchRequest": {
        "type": "object",
        "properties": {
          "claims": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "claim → verdi. Bare claims merket `revocationSearchable`; verdiene sendes som tekst."
          }
        },
        "required": [
          "claims"
        ]
      },
      "CredentialStatisticsWire": {
        "type": "object",
        "properties": {
          "issued": {
            "type": "integer",
            "format": "int64"
          },
          "revoked": {
            "type": "integer",
            "format": "int64"
          },
          "suspended": {
            "type": "integer",
            "format": "int64"
          }
        },
        "required": [
          "issued",
          "revoked",
          "suspended"
        ]
      },
      "CredentialTallyWire": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "Bevis utstederen har utstedt, også tilbaketrukne."
          },
          "active": {
            "type": "integer",
            "format": "int64",
            "description": "Bevis en bekreftet sletting av utstederen trekker tilbake permanent."
          },
          "notRevocable": {
            "type": "integer",
            "format": "int64",
            "description": "Levende mdoc-bevis utstedt foer #95, uten statusreferanse. De kan ikke trekkes tilbake, og forblir gyldige til de utloeper ogsaa om utstederen slettes."
          }
        },
        "required": [
          "total",
          "active",
          "notRevocable"
        ]
      },
      "CredentialTypeCreateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "description": "Påkrevd, unntatt med `rulebook`, der malens navn brukes om det utelates.",
            "type": [
              "string",
              "null"
            ]
          },
          "vct": {
            "description": "Bare sammen med `vctOverride: true`. Utelatt = vct avledes og låses.",
            "type": [
              "string",
              "null"
            ]
          },
          "vctOverride": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "claims": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClaimRequest"
            },
            "description": "Påkrevd, unntatt med `rulebook`, der malens claims brukes og feltet ikke kan oppgis."
          },
          "validFor": {
            "description": "ISO-8601-periode, f.eks. `P1Y` (standard).",
            "type": [
              "string",
              "null"
            ]
          },
          "rulebook": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/RulebookReferenceRequest",
                "description": "Kopier en mal fra en regelbok i stedet for å beskrive bevistypen selv."
              },
              {
                "type": "null"
              }
            ]
          },
          "claimsArriveLater": {
            "description": "Opplysninger kan ettersendes etter at bestillingen er lagt inn.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "claimSourceId": {
            "format": "uuid",
            "description": "Id-en til en kilde opplysningene hentes fra ved utstedelse.",
            "type": [
              "string",
              "null"
            ]
          },
          "mdoc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/MdocProfileRequest",
                "description": "Utsted også som `mso_mdoc`."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": []
      },
      "CredentialTypeDesignRequest": {
        "type": "object",
        "properties": {
          "displayName": {
            "description": "Navnet på `nb-NO`. Uten `texts` endres bare `nb-NO`, og andre språk beholdes.",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "description": "Beskrivelsen på `nb-NO`, som `displayName`.",
            "type": [
              "string",
              "null"
            ]
          },
          "backgroundColor": {
            "description": "`#RRGGBB`.",
            "type": [
              "string",
              "null"
            ]
          },
          "texts": {
            "items": {
              "$ref": "#/components/schemas/DisplayTextRequest"
            },
            "description": "Tekstene per språk, høyst 10, med primærspråket først. Oppgitt erstatter de alle, og må være enig med `displayName` og `description` om `nb-NO`.",
            "type": [
              "array",
              "null"
            ]
          },
          "textColor": {
            "description": "`#RRGGBB`. Utelatt beholder den lagrede; `null` = en farge som er lesbar på bakgrunnen.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": []
      },
      "CredentialTypeDesignWire": {
        "type": "object",
        "properties": {
          "displayName": {
            "description": "Navnet på `nb-NO`, eller `null` når bevistypen ikke har det språket.",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "description": "Beskrivelsen på `nb-NO`, som `displayName`.",
            "type": [
              "string",
              "null"
            ]
          },
          "backgroundColor": {
            "type": [
              "string",
              "null"
            ]
          },
          "logoPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisplayTextWire"
            },
            "description": "Tekstene per språk, med primærspråket først. Tom = norsk med bevistypens navn."
          },
          "textColor": {
            "description": "`null` = utstederen regner ut en farge som er lesbar på bakgrunnen.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "displayName",
          "description",
          "backgroundColor",
          "logoPath",
          "texts",
          "textColor"
        ]
      },
      "CredentialTypeOriginWire": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/CREDENTIAL_TYPE_ORIGIN_AUTHORED"
          },
          {
            "$ref": "#/components/schemas/CREDENTIAL_TYPE_ORIGIN_COPIED_FROM_RULEBOOK"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "AUTHORED": "#/components/schemas/CREDENTIAL_TYPE_ORIGIN_AUTHORED",
            "COPIED_FROM_RULEBOOK": "#/components/schemas/CREDENTIAL_TYPE_ORIGIN_COPIED_FROM_RULEBOOK"
          }
        }
      },
      "CredentialTypeUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "vct": {
            "description": "Kan ikke endres; bare samme verdi som den lagrede, sammen med `vctOverride: true`.",
            "type": [
              "string",
              "null"
            ]
          },
          "vctOverride": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "claims": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClaimRequest"
            },
            "description": "Erstatter alle claims."
          },
          "validFor": {
            "type": [
              "string",
              "null"
            ]
          },
          "design": {
            "$ref": "#/components/schemas/CredentialTypeDesignRequest",
            "description": "Erstatter hele designet; et utelatt felt tømmes. Logoen, en utelatt `textColor` og språkene en snarvei uten `texts` ikke nevner, beholdes."
          },
          "claimsArriveLater": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "claimSourceId": {
            "format": "uuid",
            "description": "`null` kobler fra kilden; utelatt beholder den.",
            "type": [
              "string",
              "null"
            ]
          },
          "mdoc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/MdocProfileRequest",
                "description": "`null` fjerner mdoc; utelatt beholder det."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": []
      },
      "CredentialTypeWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string",
            "description": "Bevistypens ledd i den avledede vct-en. Immutabel — se ADR 0040."
          },
          "vct": {
            "type": "string"
          },
          "vctLocked": {
            "type": "boolean",
            "description": "`true` naar vct-en er VAAR: avledet av organisasjonen og slugen, og servert av utstederen. Er den `false`, har kunden overstyrt den, og ingen kan hente typemetadata fra den."
          },
          "claims": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClaimWire"
            }
          },
          "origin": {
            "$ref": "#/components/schemas/CredentialTypeOriginWire"
          },
          "validFor": {
            "type": "string",
            "description": "Gyldighetstid fra utstedelse, som ISO-8601-periode fra `Period.toString()` (f.eks. `P1Y`)."
          },
          "design": {
            "$ref": "#/components/schemas/CredentialTypeDesignWire"
          },
          "claimsArriveLater": {
            "type": "boolean",
            "description": "Claims kan ETTERSENDES av fagsystemet etter at tilbudet er laget — utstedelsen venter paa dem."
          },
          "claimSourceId": {
            "format": "uuid",
            "description": "Claims hentes fra denne kilden ved utstedelse. `null` betyr «grunnlaget baerer alt».",
            "type": [
              "string",
              "null"
            ]
          },
          "mdoc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/MdocProfileWire",
                "description": "docType og navnerom for `mso_mdoc` (#158). `null` betyr at bevistypen utstedes som `dc+sd-jwt` alene. Med verdien publiseres den i begge formatene."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "slug",
          "vct",
          "vctLocked",
          "claims",
          "origin",
          "validFor",
          "design",
          "claimsArriveLater",
          "claimSourceId",
          "mdoc"
        ]
      },
      "DELIVERY_OUTCOME_DELIVERED": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "DELIVERED"
          },
          "statusCode": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "kind",
          "statusCode"
        ]
      },
      "DELIVERY_OUTCOME_FAILED": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "FAILED"
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "reason"
        ]
      },
      "DELIVERY_OUTCOME_REFUSED": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "REFUSED"
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "reason"
        ]
      },
      "DEPLOYMENT_STANDING_NOT_DEPLOYED": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "NOT_DEPLOYED"
          }
        },
        "required": [
          "kind"
        ]
      },
      "DEPLOYMENT_STANDING_OUTDATED": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "OUTDATED"
          },
          "deployedFingerprint": {
            "type": "string"
          },
          "currentFingerprint": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "deployedFingerprint",
          "currentFingerprint"
        ]
      },
      "DEPLOYMENT_STANDING_UP_TO_DATE": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "UP_TO_DATE"
          }
        },
        "required": [
          "kind"
        ]
      },
      "DeliveryOutcomeWire": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/DELIVERY_OUTCOME_DELIVERED"
          },
          {
            "$ref": "#/components/schemas/DELIVERY_OUTCOME_FAILED"
          },
          {
            "$ref": "#/components/schemas/DELIVERY_OUTCOME_REFUSED"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "DELIVERED": "#/components/schemas/DELIVERY_OUTCOME_DELIVERED",
            "FAILED": "#/components/schemas/DELIVERY_OUTCOME_FAILED",
            "REFUSED": "#/components/schemas/DELIVERY_OUTCOME_REFUSED"
          }
        }
      },
      "DeployedWire": {
        "type": "object",
        "properties": {
          "vct": {
            "type": "string"
          },
          "fingerprint": {
            "type": "string"
          },
          "deployedAt": {
            "type": "string"
          }
        },
        "required": [
          "vct",
          "fingerprint",
          "deployedAt"
        ]
      },
      "DeploymentStandingWire": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/DEPLOYMENT_STANDING_NOT_DEPLOYED"
          },
          {
            "$ref": "#/components/schemas/DEPLOYMENT_STANDING_OUTDATED"
          },
          {
            "$ref": "#/components/schemas/DEPLOYMENT_STANDING_UP_TO_DATE"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "NOT_DEPLOYED": "#/components/schemas/DEPLOYMENT_STANDING_NOT_DEPLOYED",
            "OUTDATED": "#/components/schemas/DEPLOYMENT_STANDING_OUTDATED",
            "UP_TO_DATE": "#/components/schemas/DEPLOYMENT_STANDING_UP_TO_DATE"
          }
        }
      },
      "DeploymentWire": {
        "type": "object",
        "properties": {
          "deployed": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/DeployedWire"
              },
              {
                "type": "null"
              }
            ]
          },
          "standing": {
            "$ref": "#/components/schemas/DeploymentStandingWire"
          },
          "blockers": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "LOGO_ADDRESS_NOT_CONFIGURED"
              ]
            }
          }
        },
        "required": [
          "deployed",
          "standing",
          "blockers"
        ]
      },
      "DisplayTextRequest": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "description": "BCP 47-språktagg, f.eks. `nb-NO` eller `en`. Ett språk én gang; det første er primærspråket."
          },
          "name": {
            "description": "Utelatt = bevistypens navn. Høyst 200 tegn.",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "description": "Utelatt = navnet. Høyst 500 tegn.",
            "type": [
              "string",
              "null"
            ]
          },
          "logoAltText": {
            "description": "Alt-teksten til logoen. Utelatt = navnet. Høyst 200 tegn.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "locale"
        ]
      },
      "DisplayTextWire": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string"
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "logoAltText": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "locale",
          "name",
          "description",
          "logoAltText"
        ]
      },
      "EventPageWire": {
        "type": "object",
        "properties": {
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventWire"
            },
            "description": "Nyeste først."
          },
          "issuerEventsUnavailable": {
            "type": "boolean",
            "description": "`true` når utstederens hendelser ikke kunne hentes; lista har da bare bevisstudios egne."
          }
        },
        "required": [
          "events",
          "issuerEventsUnavailable"
        ]
      },
      "EventWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time"
          },
          "actorKind": {
            "type": "string",
            "description": "Hvem som gjorde det: `MEMBER`, `INTEGRATION_CLIENT`, `CONTROL_PLANE`, `PLATFORM_ADMIN`, `SERVICE` eller `WALLET_USER`."
          },
          "actorLabel": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "description": "Hendelsen, f.eks. `CREDENTIAL_TYPE_CREATED` eller `CREDENTIAL_REVOKED`."
          },
          "objectType": {
            "type": "string",
            "description": "Hva hendelsen gjelder, f.eks. `CREDENTIAL_TYPE` eller `CREDENTIAL`."
          },
          "objectId": {
            "type": "string"
          },
          "objectName": {
            "type": "string"
          },
          "detail": {
            "type": [
              "string",
              "null"
            ]
          },
          "before": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AccessStateWire",
                "description": "Tilgangene før hendelsen. Bare når hendelsen endret en tilgang."
              },
              {
                "type": "null"
              }
            ]
          },
          "after": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AccessStateWire",
                "description": "Tilgangene etter hendelsen. Bare når hendelsen endret en tilgang."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "occurredAt",
          "actorKind",
          "actorLabel",
          "type",
          "objectType",
          "objectId",
          "objectName"
        ]
      },
      "FeatureStateWire": {
        "type": "object",
        "properties": {
          "feature": {
            "type": "string",
            "enum": [
              "BETA_FEATURES"
            ]
          },
          "enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "feature",
          "enabled"
        ]
      },
      "IssuanceOrderClaimsRequest": {
        "type": "object",
        "properties": {
          "claims": {
            "type": "object",
            "additionalProperties": {
              "type": [
                "string",
                "number",
                "boolean"
              ]
            },
            "description": "Opplysningene som ettersendes, claim → verdi."
          }
        },
        "required": [
          "claims"
        ]
      },
      "IssuanceOrderRequest": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string",
            "enum": [
              "dc+sd-jwt",
              "mso_mdoc"
            ]
          },
          "claims": {
            "type": "object",
            "additionalProperties": {
              "type": [
                "string",
                "number",
                "boolean"
              ]
            },
            "description": "Opplysningene i beviset, claim → verdi, med typen bevistypen sier."
          },
          "txCode": {
            "description": "4–8 sifre brukeren taster i lommeboka. Bare med `PRE_AUTHORIZED_CODE`.",
            "type": [
              "string",
              "null"
            ]
          },
          "validUntil": {
            "description": "Siste dag beviset gjelder, til og med, i UTC, f.eks. `2027-03-31`. Godtar også `31.03.2027` og et tidspunkt (`2027-03-31T23:59:59Z`; midnatt i Oslo regnes som den norske datoen). Skråstrek avvises. Passert gir 400; etter bevistypens vanlige utløp settes den til dagen før. Utelatt: bevistypens gyldighet.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "format",
          "claims"
        ]
      },
      "IssuanceOrderStatusWire": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "VALID",
              "ISSUED",
              "EXPIRED",
              "FAILED"
            ]
          }
        },
        "required": [
          "orderId",
          "status"
        ]
      },
      "IssuanceOrderWire": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string"
          },
          "offerUri": {
            "type": "string"
          },
          "credentialName": {
            "type": "string"
          },
          "credentialDescription": {
            "type": "string"
          },
          "validUntil": {
            "format": "date",
            "description": "Siste dag beviset gjelder, til og med, i UTC — den som gjelder, ikke nødvendigvis den du sendte: en dato etter bevistypens vanlige utløp er satt til dagen før. Bare når bestillingen hadde `validUntil`.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "orderId",
          "offerUri",
          "credentialName",
          "credentialDescription"
        ]
      },
      "IssuanceRuleCreateRequest": {
        "type": "object",
        "properties": {
          "issuerId": {
            "type": "string",
            "format": "uuid"
          },
          "credentialTypeId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "method": {
            "type": "string",
            "enum": [
              "PRE_AUTHORIZED_CODE",
              "AUTHORIZATION_CODE",
              "CREDENTIAL_AGAINST_CREDENTIAL"
            ]
          },
          "authProviderId": {
            "format": "uuid",
            "description": "Bare med `AUTHORIZATION_CODE`.",
            "type": [
              "string",
              "null"
            ]
          },
          "claimMappingRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClaimMappingRequest"
            },
            "description": "Bare med `CREDENTIAL_AGAINST_CREDENTIAL`."
          },
          "presentationVerifierId": {
            "format": "uuid",
            "description": "Bare med `CREDENTIAL_AGAINST_CREDENTIAL`: organisasjonens egen verifier, som ber lommeboka om fremvisningen. Påkrevd for å publisere.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "issuerId",
          "credentialTypeId",
          "name",
          "method"
        ]
      },
      "IssuanceRuleUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "method": {
            "type": "string",
            "enum": [
              "PRE_AUTHORIZED_CODE",
              "AUTHORIZATION_CODE",
              "CREDENTIAL_AGAINST_CREDENTIAL"
            ]
          },
          "authProviderId": {
            "format": "uuid",
            "description": "`null` kobler fra; utelatt beholder koblingen.",
            "type": [
              "string",
              "null"
            ]
          },
          "claimMappingRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClaimMappingRequest"
            },
            "description": "Erstatter reglene. Utelatt beholder dem bare så lenge metoden er `CREDENTIAL_AGAINST_CREDENTIAL`."
          },
          "presentationVerifierId": {
            "format": "uuid",
            "description": "`null` kobler fra; utelatt beholder verifieren så lenge metoden er `CREDENTIAL_AGAINST_CREDENTIAL`.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": []
      },
      "IssuanceRuleWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "issuerId": {
            "type": "string",
            "format": "uuid"
          },
          "credentialTypeId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "method": {
            "type": "string",
            "enum": [
              "PRE_AUTHORIZED_CODE",
              "AUTHORIZATION_CODE",
              "CREDENTIAL_AGAINST_CREDENTIAL"
            ]
          },
          "authProviderId": {
            "format": "uuid",
            "type": [
              "string",
              "null"
            ]
          },
          "claimMappingRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClaimMappingWire"
            },
            "description": "Alltid med, ogsaa tom: flata skal aldri maatte gjette paa om feltet finnes."
          },
          "presentationVerifierId": {
            "format": "uuid",
            "description": "Organisasjonens verifier som ber om fremvisningen (`CREDENTIAL_AGAINST_CREDENTIAL`), ellers `null`.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "issuerId",
          "credentialTypeId",
          "name",
          "method",
          "authProviderId",
          "claimMappingRules",
          "presentationVerifierId"
        ]
      },
      "IssuedCredentialWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "credentialTypeId": {
            "type": "string",
            "format": "uuid",
            "description": "Bevistypens id hos utstederen. Ikke det samme som bevistypens id i bevisstudio."
          },
          "lifecycle": {
            "type": "string",
            "enum": [
              "VALID",
              "REVOKED",
              "SUSPENDED"
            ]
          },
          "statusListUri": {
            "type": "string",
            "format": "uri"
          },
          "statusListIndex": {
            "type": "integer",
            "format": "int64"
          },
          "issuedAt": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "format": {
            "type": "string",
            "enum": [
              "dc+sd-jwt",
              "mso_mdoc"
            ]
          },
          "issuanceRuleId": {
            "format": "uuid",
            "description": "`null` når regelen ikke er kjent (bevis utstedt før koblingen ble lagret).",
            "type": [
              "string",
              "null"
            ]
          },
          "issuerId": {
            "format": "uuid",
            "type": [
              "string",
              "null"
            ]
          },
          "vct": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "credentialTypeId",
          "lifecycle",
          "statusListUri",
          "statusListIndex",
          "issuedAt",
          "expiresAt",
          "format",
          "issuanceRuleId",
          "issuerId",
          "vct"
        ]
      },
      "IssuerAccessCertificateRegistrationWire": {
        "type": "object",
        "properties": {
          "certificate": {
            "$ref": "#/components/schemas/IssuerAccessCertificateWire"
          },
          "advisories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CertificateFindingWire"
            }
          }
        },
        "required": [
          "certificate",
          "advisories"
        ]
      },
      "IssuerAccessCertificateRequestWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "keyRef": {
            "type": "string"
          },
          "subjectDn": {
            "type": "string"
          },
          "subjectAlternativeNames": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "csrPem": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "COMPLETED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "handoff": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CertificateHandoffWire"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "keyRef",
          "subjectDn",
          "subjectAlternativeNames",
          "csrPem",
          "status",
          "createdAt"
        ]
      },
      "IssuerAccessCertificateWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "keyRef": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "RETIRED",
              "REVOKED"
            ]
          },
          "subject": {
            "type": "string"
          },
          "subjectOrganizationIdentifier": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumbprint": {
            "type": "string"
          },
          "notBefore": {
            "type": "string",
            "format": "date-time"
          },
          "notAfter": {
            "type": "string",
            "format": "date-time"
          },
          "provenance": {
            "enum": [
              "UPLOADED",
              "PLATFORM_DEFAULT",
              "REGISTERED"
            ],
            "description": "Hvor sertifikatet kom fra. I dag alltid `REGISTERED` (CSR-flyten); utelatt fra en utsteder som ennå ikke svarer det.",
            "type": [
              "string",
              "null"
            ]
          },
          "chain": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "profile": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CertificateProfileWire",
                "description": "Profilkontrollen. Bare i historikken."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "keyRef",
          "status",
          "subject",
          "thumbprint",
          "notBefore",
          "notAfter",
          "chain",
          "createdAt"
        ]
      },
      "IssuerCertificateWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "keyRef": {
            "type": "string"
          },
          "keyUsable": {
            "type": "boolean"
          },
          "keyUnusableReason": {
            "description": "Bare når `keyUsable` er `false`.",
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "SUPERSEDED",
              "REVOKED"
            ]
          },
          "subject": {
            "type": "string"
          },
          "thumbprint": {
            "type": "string"
          },
          "notBefore": {
            "type": "string",
            "format": "date-time"
          },
          "notAfter": {
            "type": "string",
            "format": "date-time"
          },
          "chainLength": {
            "type": "integer",
            "format": "int64",
            "description": "Antall sertifikater i kjeden utenom bladet."
          },
          "provenance": {
            "type": "string",
            "enum": [
              "REGISTERED",
              "UPLOADED",
              "GENERATED",
              "PLATFORM_DEFAULT"
            ]
          },
          "keyBackend": {
            "type": "string",
            "enum": [
              "SOFTWARE",
              "HSM"
            ]
          },
          "generatedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "qualifiable": {
            "type": "boolean"
          },
          "selfSigned": {
            "type": "boolean"
          },
          "chain": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Kjeden som base64 DER, bladet først (som `x5c`)."
          },
          "trustChain": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrustChainLinkWire"
            }
          }
        },
        "required": [
          "id",
          "keyRef",
          "keyUsable",
          "status",
          "subject",
          "thumbprint",
          "notBefore",
          "notAfter",
          "chainLength",
          "provenance",
          "keyBackend",
          "qualifiable",
          "selfSigned",
          "chain",
          "trustChain"
        ]
      },
      "IssuerCreateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string",
            "description": "Utstederens ledd i adressen. Små bokstaver, sifre og bindestrek; kan ikke endres senere."
          },
          "deployedTo": {
            "type": "string",
            "format": "uuid",
            "description": "Id-en til en utstedertjeneste fra `GET /v1/issuer-services`."
          },
          "baseUrl": {
            "description": "Egen https-adresse for utstederen, uten avsluttende `/`. Utelatt = den avledede adressen.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name",
          "slug",
          "deployedTo"
        ]
      },
      "IssuerServiceWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "baseUrl": {
            "type": "string"
          },
          "dedicated": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "baseUrl",
          "dedicated"
        ]
      },
      "IssuerUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "description": "Kan ikke endres; en annen verdi enn den lagrede gir 409.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name"
        ]
      },
      "IssuerWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "deployedTo": {
            "type": "string",
            "format": "uuid"
          },
          "baseUrl": {
            "description": "`null` betyr at utstederen bruker den avledede stien hos issuer-servicen.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "slug",
          "deployedTo",
          "baseUrl"
        ]
      },
      "KeyImportRequest": {
        "type": "object",
        "properties": {
          "privateKeyPem": {
            "type": "string",
            "description": "Den private nøkkelen som PEM. Sendes til signeringstjenesten og lagres ikke her."
          },
          "certificatePem": {
            "type": "string"
          },
          "chainPem": {
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "required": [
          "privateKeyPem",
          "certificatePem"
        ]
      },
      "MdocProfileRequest": {
        "type": "object",
        "properties": {
          "docType": {
            "type": "string",
            "description": "ISO 18013-5 DocType, som omvendt domenenavn (f.eks. `no.kantega.medlemskap.1`)."
          },
          "namespace": {
            "type": "string",
            "description": "Navnerommet alle claims bor i."
          },
          "reservedOverride": {
            "description": "Kreves for en docType eller et navnerom under `eu.europa.ec.` eller `org.iso.`.",
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "docType",
          "namespace"
        ]
      },
      "MdocProfileWire": {
        "type": "object",
        "properties": {
          "docType": {
            "type": "string",
            "description": "ISO 18013-5 DocType, som omvendt domenenavn (f.eks. `no.kantega.medlemskap.1`). Det lommeboka kjenner beviset igjen paa."
          },
          "namespace": {
            "type": "string",
            "description": "Navnerommet ALLE bevistypens claims bor i. Claim-stien i DCQL blir `[navnerom, claim]`."
          }
        },
        "required": [
          "docType",
          "namespace"
        ]
      },
      "MeWire": {
        "type": "object",
        "properties": {
          "role": {
            "enum": [
              "ADMINISTRATOR",
              "CONTRIBUTOR"
            ],
            "description": "Rollen i organisasjonen, fra kallerens egen medlemsrad. `null` for en integrasjonsklient og for plattform-admin, som ikke er medlemmer.",
            "type": [
              "string",
              "null"
            ]
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tilgangene kallet har — nøyaktig dem tilgangssjekken måler mot."
          }
        },
        "required": [
          "role",
          "scopes"
        ]
      },
      "ORGANIZATION_LEVEL_SELF_DECLARED": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "SELF_DECLARED"
          },
          "statedOrganizationNumber": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "kind",
          "statedOrganizationNumber"
        ]
      },
      "ORGANIZATION_LEVEL_VERIFIED": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "VERIFIED"
          },
          "organizationNumber": {
            "type": "string"
          },
          "verifiedAt": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "organizationNumber",
          "verifiedAt"
        ]
      },
      "OrganizationLevelWire": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ORGANIZATION_LEVEL_SELF_DECLARED"
          },
          {
            "$ref": "#/components/schemas/ORGANIZATION_LEVEL_VERIFIED"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "SELF_DECLARED": "#/components/schemas/ORGANIZATION_LEVEL_SELF_DECLARED",
            "VERIFIED": "#/components/schemas/ORGANIZATION_LEVEL_VERIFIED"
          }
        }
      },
      "OrganizationWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "level": {
            "$ref": "#/components/schemas/OrganizationLevelWire"
          },
          "slugs": {
            "items": {
              "$ref": "#/components/schemas/SlugAssignmentWire"
            },
            "description": "Hele slug-historikken. `null` naar svaret ikke baerer den (registreringen gjoer ikke det).",
            "type": [
              "array",
              "null"
            ]
          },
          "deactivatedAt": {
            "format": "date-time",
            "description": "Naar organisasjonen ble deaktivert. `null` = aktiv. Et TIDSPUNKT og ikke et flagg: «er den deaktivert» kan utledes av tidspunktet, «naar ble den det» kan ikke utledes av et flagg — og det er noeyaktig spoersmaalet naar en kunde ringer og lurer paa hvorfor noe sluttet aa virke.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "level",
          "slugs",
          "deactivatedAt"
        ]
      },
      "OwningOrganizationWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "slug",
          "name"
        ]
      },
      "PresentedCredentialWire": {
        "type": "object",
        "properties": {
          "queryId": {
            "type": [
              "string",
              "null"
            ]
          },
          "format": {
            "type": "string"
          },
          "credentialType": {
            "description": "vct eller docType.",
            "type": [
              "string",
              "null"
            ]
          },
          "issuer": {
            "description": "Utstederen: bladsertifikatets subject når beviset bar `x5c`, ellers `iss`.",
            "type": [
              "string",
              "null"
            ]
          },
          "unverifiedIss": {
            "description": "`iss` fra et SD-JWT VC med `x5c`. Ikke bundet av signaturen; utelatt ellers.",
            "type": [
              "string",
              "null"
            ]
          },
          "claims": {
            "type": "object",
            "additionalProperties": {},
            "description": "Opplysningene lommeboka delte, claim → verdi."
          },
          "checks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerificationCheckWire"
            }
          }
        },
        "required": [
          "queryId",
          "format",
          "credentialType",
          "issuer",
          "claims",
          "checks"
        ]
      },
      "ProductUpdateWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "publishedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "authoredBy": {
            "format": "uuid",
            "type": [
              "string",
              "null"
            ]
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "title",
          "body",
          "publishedAt",
          "authoredBy",
          "updatedAt"
        ]
      },
      "REGISTRATION_ADVISORY_DISPLAY_NAME_DIFFERS": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "DISPLAY_NAME_DIFFERS"
          },
          "inCertificate": {
            "type": "string"
          },
          "registered": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "inCertificate",
          "registered"
        ]
      },
      "REGISTRATION_ADVISORY_NO_DISPLAY_NAME": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "NO_DISPLAY_NAME"
          }
        },
        "required": [
          "kind"
        ]
      },
      "REGISTRATION_ADVISORY_NO_ORGANIZATION_NUMBER_IN_SUBJECT": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "NO_ORGANIZATION_NUMBER_IN_SUBJECT"
          },
          "organizationIdentifier": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "kind",
          "organizationIdentifier"
        ]
      },
      "REGISTRATION_ADVISORY_ORGANIZATION_NUMBER_DIFFERS": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "ORGANIZATION_NUMBER_DIFFERS"
          },
          "inCertificate": {
            "type": "string"
          },
          "registered": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "inCertificate",
          "registered"
        ]
      },
      "REGISTRATION_ADVISORY_ORGANIZATION_NUMBER_NOT_VERIFIABLE": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "ORGANIZATION_NUMBER_NOT_VERIFIABLE"
          }
        },
        "required": [
          "kind"
        ]
      },
      "REGISTRATION_ADVISORY_WRONG_VERIFIER": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "WRONG_VERIFIER"
          },
          "certificateBelongsTo": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "kind",
          "certificateBelongsTo"
        ]
      },
      "RESULT_DELIVERY_POLL": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "POLL"
          }
        },
        "required": [
          "kind"
        ]
      },
      "RESULT_DELIVERY_WEBHOOK": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "const": "WEBHOOK"
          },
          "endpoint": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "kind",
          "endpoint"
        ]
      },
      "ReasonRequest": {
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": []
      },
      "RegistrationAdvisoryWire": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/REGISTRATION_ADVISORY_DISPLAY_NAME_DIFFERS"
          },
          {
            "$ref": "#/components/schemas/REGISTRATION_ADVISORY_NO_DISPLAY_NAME"
          },
          {
            "$ref": "#/components/schemas/REGISTRATION_ADVISORY_NO_ORGANIZATION_NUMBER_IN_SUBJECT"
          },
          {
            "$ref": "#/components/schemas/REGISTRATION_ADVISORY_ORGANIZATION_NUMBER_DIFFERS"
          },
          {
            "$ref": "#/components/schemas/REGISTRATION_ADVISORY_ORGANIZATION_NUMBER_NOT_VERIFIABLE"
          },
          {
            "$ref": "#/components/schemas/REGISTRATION_ADVISORY_WRONG_VERIFIER"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "DISPLAY_NAME_DIFFERS": "#/components/schemas/REGISTRATION_ADVISORY_DISPLAY_NAME_DIFFERS",
            "NO_DISPLAY_NAME": "#/components/schemas/REGISTRATION_ADVISORY_NO_DISPLAY_NAME",
            "NO_ORGANIZATION_NUMBER_IN_SUBJECT": "#/components/schemas/REGISTRATION_ADVISORY_NO_ORGANIZATION_NUMBER_IN_SUBJECT",
            "ORGANIZATION_NUMBER_DIFFERS": "#/components/schemas/REGISTRATION_ADVISORY_ORGANIZATION_NUMBER_DIFFERS",
            "ORGANIZATION_NUMBER_NOT_VERIFIABLE": "#/components/schemas/REGISTRATION_ADVISORY_ORGANIZATION_NUMBER_NOT_VERIFIABLE",
            "WRONG_VERIFIER": "#/components/schemas/REGISTRATION_ADVISORY_WRONG_VERIFIER"
          }
        }
      },
      "RestrictionEntryWire": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "issuance-organization",
              "issuer",
              "issuer-credential-type",
              "verification-organization",
              "verifier",
              "verification-rule"
            ],
            "description": "`issuance-organization` og `verification-organization` er hele organisasjonen på sin side og står alene der. `issuer` og `verifier` har id-en i `identifier`. De dype typene avvises inntil videre."
          },
          "identifier": {
            "format": "uuid",
            "description": "Id-en til utstederen eller verifieren. FRAVAeRENDE for organisasjonstypene, som bare har `type`.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "RestrictionWire": {
        "type": "object",
        "properties": {
          "issuance": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RestrictionEntryWire"
            }
          },
          "verification": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RestrictionEntryWire"
            }
          }
        },
        "required": [
          "issuance",
          "verification"
        ]
      },
      "ResultDeliveryRequest": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "POLL",
              "WEBHOOK"
            ]
          },
          "endpoint": {
            "description": "https-adressen resultatet sendes til. Bare med `WEBHOOK`.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "kind"
        ]
      },
      "ResultDeliveryWire": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/RESULT_DELIVERY_POLL"
          },
          {
            "$ref": "#/components/schemas/RESULT_DELIVERY_WEBHOOK"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "POLL": "#/components/schemas/RESULT_DELIVERY_POLL",
            "WEBHOOK": "#/components/schemas/RESULT_DELIVERY_WEBHOOK"
          }
        }
      },
      "RulebookReferenceRequest": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "DIGDIR",
              "EU"
            ]
          },
          "identifier": {
            "type": "string"
          }
        },
        "required": [
          "source",
          "identifier"
        ]
      },
      "SigningCertificateRequestWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "keyRef": {
            "type": "string"
          },
          "keyUsable": {
            "type": "boolean"
          },
          "keyUnusableReason": {
            "type": [
              "string",
              "null"
            ]
          },
          "subjectDn": {
            "type": "string"
          },
          "subjectAlternativeNames": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "csrPem": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "COMPLETED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "handoff": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CertificateHandoffWire",
                "description": "Hva du gjør med CSR-en. Utelatt når sertifikatet alt er utstedt."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "keyRef",
          "keyUsable",
          "subjectDn",
          "subjectAlternativeNames",
          "csrPem",
          "status",
          "createdAt"
        ]
      },
      "SigningKeyChoiceWire": {
        "type": "object",
        "properties": {
          "organization": {
            "$ref": "#/components/schemas/OwningOrganizationWire"
          },
          "role": {
            "type": "string",
            "enum": [
              "ISSUER_SIGNING",
              "ISSUER_ACCESS",
              "VERIFIER_ACCESS"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "PLATFORM_DEFAULT",
              "UPLOADED",
              "KSS_GENERATED",
              "EXTERNAL_KMS"
            ]
          },
          "chosenBy": {
            "type": "string"
          },
          "chosenAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "organization",
          "role",
          "source",
          "chosenBy",
          "chosenAt"
        ]
      },
      "SigningKeySourcesWire": {
        "type": "object",
        "properties": {
          "choices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SigningKeyChoiceWire"
            }
          }
        },
        "required": [
          "choices"
        ]
      },
      "SlugAssignmentWire": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "namespace": {
            "type": "string",
            "enum": [
              "UNVERIFIED",
              "VERIFIED"
            ]
          },
          "assignedAt": {
            "type": "string",
            "format": "date-time"
          },
          "current": {
            "type": "boolean"
          }
        },
        "required": [
          "slug",
          "namespace",
          "assignedAt",
          "current"
        ]
      },
      "StartedVerificationSessionWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "verifierId": {
            "type": "string",
            "format": "uuid"
          },
          "ruleId": {
            "type": "string",
            "format": "uuid",
            "description": "Verifiseringsregelen sesjonen ble startet med."
          },
          "phase": {
            "type": "string",
            "enum": [
              "PENDING_REQUEST",
              "REQUEST_DELIVERED",
              "RESPONSE_RECEIVED",
              "VERIFIED",
              "REJECTED",
              "EXPIRED"
            ]
          },
          "clientId": {
            "type": "string",
            "description": "OID4VP `client_id`. Lenka til lommeboka er `openid4vp://?client_id=…&request_uri=…`."
          },
          "requestUri": {
            "type": "string",
            "format": "uri",
            "description": "Hvor lommeboka henter forespørselen. Gis bare her, én gang; ikke logg den."
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "verifierId",
          "ruleId",
          "phase",
          "clientId",
          "requestUri",
          "expiresAt"
        ]
      },
      "SyntheticContextWire": {
        "type": "object",
        "properties": {
          "organization_id": {
            "type": "string",
            "format": "uuid"
          },
          "synthetic": {
            "type": "boolean"
          },
          "environment": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_instance": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "organization_id",
          "synthetic",
          "environment",
          "source_instance"
        ]
      },
      "TokenError": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "`invalid_client`, `invalid_request`, `unsupported_grant_type`, `invalid_target` eller `invalid_scope` (RFC 6749 §5.2)."
          },
          "error_description": {
            "type": "string"
          }
        },
        "required": [
          "error",
          "error_description"
        ]
      },
      "TokenRequest": {
        "type": "object",
        "properties": {
          "grant_type": {
            "type": "string",
            "description": "Alltid `client_credentials`."
          },
          "client_id": {
            "description": "Kan i stedet sendes i `Authorization: Basic`.",
            "type": [
              "string",
              "null"
            ]
          },
          "client_secret": {
            "description": "Kan i stedet sendes i `Authorization: Basic`.",
            "type": [
              "string",
              "null"
            ]
          },
          "scope": {
            "description": "Tilgangene du ber om, skilt med mellomrom. Utelatt gir tokenet ALLE tilgangene klienten er registrert med (RFC 6749 §3.3). Be om bare dem kallet trenger: et token med færre tilganger gjør mindre skade om det lekker.",
            "type": [
              "string",
              "null"
            ]
          },
          "resource": {
            "description": "Trengs ikke. Bare bevisstudios egen adresse godtas; alt annet er `invalid_target`.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "grant_type"
        ]
      },
      "TokenResponse": {
        "type": "object",
        "properties": {
          "access_token": {
            "type": "string"
          },
          "token_type": {
            "type": "string",
            "description": "Alltid `Bearer`."
          },
          "expires_in": {
            "type": "integer",
            "format": "int64",
            "description": "Sekunder til tokenet utløper. Levetiden varierer med miljøet, så les verdien framfor å anta den, og bruk samme token til det utløper."
          },
          "scope": {
            "type": "string",
            "description": "Tilgangene tokenet har, skilt med mellomrom."
          }
        },
        "required": [
          "access_token",
          "token_type",
          "expires_in",
          "scope"
        ]
      },
      "TrustChainLinkWire": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string"
          },
          "issuer": {
            "type": "string"
          },
          "notBefore": {
            "type": "string",
            "format": "date-time"
          },
          "notAfter": {
            "type": "string",
            "format": "date-time"
          },
          "thumbprint": {
            "type": "string",
            "description": "SHA-256, små heksadesimaler."
          },
          "san": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "selfSigned": {
            "type": "boolean"
          },
          "trustAnchor": {
            "type": "boolean"
          }
        },
        "required": [
          "subject",
          "issuer",
          "notBefore",
          "notAfter",
          "thumbprint",
          "san",
          "selfSigned",
          "trustAnchor"
        ]
      },
      "UncheckedWire": {
        "type": "object",
        "properties": {
          "check": {
            "type": "string",
            "enum": [
              "ISSUER_SIGNATURE",
              "ISSUER_TRUST",
              "SELECTIVE_DISCLOSURE",
              "REVOCATION",
              "EXPIRY",
              "HOLDER_BINDING",
              "MATCHES_REQUEST",
              "CLAIM_CONSTRAINTS"
            ]
          },
          "reason": {
            "type": "string",
            "enum": [
              "STATUS_LIST_UNAVAILABLE",
              "STATUS_LIST_RESERVED_VALUE",
              "TRUST_NOT_CONFIGURED"
            ]
          }
        },
        "required": [
          "check",
          "reason"
        ]
      },
      "VERIFICATION_RESULT_EXPIRED": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "EXPIRED"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "settledAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "status",
          "sessionId",
          "settledAt"
        ]
      },
      "VERIFICATION_RESULT_REJECTED": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "REJECTED"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "settledAt": {
            "type": "string",
            "format": "date-time"
          },
          "failures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerificationFailureWire"
            }
          }
        },
        "required": [
          "status",
          "sessionId",
          "settledAt",
          "failures"
        ]
      },
      "VERIFICATION_RESULT_VERIFIED": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "VERIFIED"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "settledAt": {
            "type": "string",
            "format": "date-time"
          },
          "assurance": {
            "type": "string",
            "enum": [
              "COMPLETE",
              "INDETERMINATE"
            ],
            "description": "`INDETERMINATE` når en kontroll ikke kunne gjøres; `unchecked` sier hvilken."
          },
          "unchecked": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UncheckedWire"
            }
          },
          "presentations": {
            "items": {
              "$ref": "#/components/schemas/PresentedCredentialWire"
            },
            "description": "`null` når verifieren ikke lagrer innholdet.",
            "type": [
              "array",
              "null"
            ]
          }
        },
        "required": [
          "status",
          "sessionId",
          "settledAt",
          "assurance",
          "unchecked",
          "presentations"
        ]
      },
      "VerificationCheckWire": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "ISSUER_SIGNATURE",
              "ISSUER_TRUST",
              "SELECTIVE_DISCLOSURE",
              "REVOCATION",
              "EXPIRY",
              "HOLDER_BINDING",
              "MATCHES_REQUEST",
              "CLAIM_CONSTRAINTS"
            ]
          },
          "outcome": {
            "type": "string",
            "enum": [
              "PASS",
              "FAIL",
              "NOT_CHECKED"
            ]
          },
          "detail": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name",
          "outcome",
          "detail"
        ]
      },
      "VerificationFailureWire": {
        "type": "object",
        "properties": {
          "queryId": {
            "type": [
              "string",
              "null"
            ]
          },
          "check": {
            "enum": [
              "ISSUER_SIGNATURE",
              "ISSUER_TRUST",
              "SELECTIVE_DISCLOSURE",
              "REVOCATION",
              "EXPIRY",
              "HOLDER_BINDING",
              "MATCHES_REQUEST",
              "CLAIM_CONSTRAINTS"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "detail": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "queryId",
          "check",
          "detail"
        ]
      },
      "VerificationResultWire": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/VERIFICATION_RESULT_EXPIRED"
          },
          {
            "$ref": "#/components/schemas/VERIFICATION_RESULT_REJECTED"
          },
          {
            "$ref": "#/components/schemas/VERIFICATION_RESULT_VERIFIED"
          }
        ],
        "discriminator": {
          "propertyName": "status",
          "mapping": {
            "EXPIRED": "#/components/schemas/VERIFICATION_RESULT_EXPIRED",
            "REJECTED": "#/components/schemas/VERIFICATION_RESULT_REJECTED",
            "VERIFIED": "#/components/schemas/VERIFICATION_RESULT_VERIFIED"
          }
        }
      },
      "VerificationRuleCreateRequest": {
        "type": "object",
        "properties": {
          "verifierId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "query": {
            "type": "object",
            "description": "DCQL-spørringen (OID4VP 1.0 §6). Må ha `credentials`."
          },
          "delivery": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ResultDeliveryRequest",
                "description": "Hvordan resultatet leveres. Utelatt = du henter det selv (`POLL`)."
              },
              {
                "type": "null"
              }
            ]
          },
          "claimConstraints": {
            "items": {
              "$ref": "#/components/schemas/ClaimConstraintWire"
            },
            "description": "Krav til dato-claims, målt mot øyeblikket svaret tas imot (ikke når forespørselen ble opprettet). En Kantega-utvidelse ved siden av DCQL: den sendes ikke til lommeboka, og dømmes av verifieren som sjekken `CLAIM_CONSTRAINTS`. Hvert krav må peke på et bevis og et claim `query` ber om.",
            "type": [
              "array",
              "null"
            ]
          }
        },
        "required": [
          "verifierId",
          "name",
          "query"
        ]
      },
      "VerificationRuleUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "query": {
            "type": "object",
            "description": "Erstatter spørringen. Må ha `credentials`."
          },
          "delivery": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ResultDeliveryRequest",
                "description": "Utelatt eller `null` beholder leveringen."
              },
              {
                "type": "null"
              }
            ]
          },
          "claimConstraints": {
            "items": {
              "$ref": "#/components/schemas/ClaimConstraintWire"
            },
            "description": "Erstatter kravene; `[]` fjerner dem. Utelatt eller `null` beholder dem, og de må passe en ny `query`.",
            "type": [
              "array",
              "null"
            ]
          }
        },
        "required": []
      },
      "VerificationRuleWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "verifierId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "query": {
            "type": "object",
            "description": "DCQL-spørringen (OID4VP 1.0 §6), normalisert: standardverdiene står med, ukjente felter er borte."
          },
          "delivery": {
            "$ref": "#/components/schemas/ResultDeliveryWire"
          },
          "claimConstraints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClaimConstraintWire"
            },
            "description": "Krav til dato-claims, målt mot øyeblikket svaret tas imot (ikke når forespørselen ble opprettet). En Kantega-utvidelse ved siden av DCQL: den sendes ikke til lommeboka, og dømmes av verifieren som sjekken `CLAIM_CONSTRAINTS`. Hvert krav må peke på et bevis og et claim `query` ber om."
          }
        },
        "required": [
          "id",
          "verifierId",
          "name",
          "query",
          "delivery"
        ]
      },
      "VerificationSessionRequest": {
        "type": "object",
        "properties": {
          "verificationRuleId": {
            "type": "string",
            "format": "uuid"
          },
          "continuationUri": {
            "description": "Adressen lommeboka sender brukeren tilbake til i samme-enhets-flyten (OID4VP 1.0 §8.2), med `response_code` som query-parameter. Med den satt kan resultatet bare leses med koden (første gang), og koden kommer bare til den nettleseren lommeboka sender brukeren til. Utelat den når QR-koden kan skannes på en annen enhet: da når koden aldri skjermen som viste QR-koden, og resultatet kan ikke hentes. Uten den er det vanlig polling.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "verificationRuleId"
        ]
      },
      "VerificationSessionWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "verifierId": {
            "type": "string",
            "format": "uuid"
          },
          "ruleId": {
            "type": "string",
            "format": "uuid"
          },
          "phase": {
            "type": "string",
            "enum": [
              "PENDING_REQUEST",
              "REQUEST_DELIVERED",
              "RESPONSE_RECEIVED",
              "VERIFIED",
              "REJECTED",
              "EXPIRED"
            ],
            "description": "`VERIFIED`, `REJECTED` og `EXPIRED` er avgjort; da finnes resultatet."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "verifierId",
          "ruleId",
          "phase",
          "createdAt",
          "expiresAt"
        ]
      },
      "VerifierAccessCertificateRequestWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "keyRef": {
            "type": "string"
          },
          "keyUsable": {
            "type": "boolean"
          },
          "keyUnusableReason": {
            "type": [
              "string",
              "null"
            ]
          },
          "subjectDn": {
            "type": "string"
          },
          "subjectAlternativeNames": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "csrPem": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "COMPLETED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "handoff": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CertificateHandoffWire"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "keyRef",
          "keyUsable",
          "subjectDn",
          "subjectAlternativeNames",
          "csrPem",
          "status",
          "createdAt"
        ]
      },
      "VerifierCreateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "deployedTo": {
            "type": "string",
            "format": "uuid",
            "description": "Id-en til en verifiertjeneste fra `GET /v1/verifier-services`."
          }
        },
        "required": [
          "name",
          "deployedTo"
        ]
      },
      "VerifierServiceWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "baseUrl": {
            "type": "string"
          },
          "dedicated": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "baseUrl",
          "dedicated"
        ]
      },
      "VerifierUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ]
      },
      "VerifierWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "deployedTo": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "id",
          "name",
          "deployedTo"
        ]
      },
      "WalletNotificationWire": {
        "type": "object",
        "properties": {
          "credentialId": {
            "type": "string",
            "format": "uuid"
          },
          "event": {
            "enum": [
              "CREDENTIAL_ACCEPTED",
              "CREDENTIAL_FAILURE",
              "CREDENTIAL_DELETED"
            ],
            "description": "`null` til lommeboka har sendt kvitteringen (OID4VCI 1.0 §11).",
            "type": [
              "string",
              "null"
            ]
          },
          "eventDescription": {
            "type": [
              "string",
              "null"
            ]
          },
          "receivedAt": {
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "promisedAt": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "credentialId",
          "event",
          "eventDescription",
          "receivedAt",
          "promisedAt",
          "expiresAt"
        ]
      },
      "WebhookDeliveryWire": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "verificationRuleId": {
            "type": "string",
            "format": "uuid"
          },
          "endpoint": {
            "type": "string",
            "format": "uri"
          },
          "attemptedAt": {
            "type": "string",
            "format": "date-time"
          },
          "attempt": {
            "type": "integer",
            "format": "int32"
          },
          "nextAttemptAt": {
            "format": "date-time",
            "description": "`null` når resultatet er levert, eller forsøkene er gitt opp.",
            "type": [
              "string",
              "null"
            ]
          },
          "outcome": {
            "$ref": "#/components/schemas/DeliveryOutcomeWire"
          }
        },
        "required": [
          "id",
          "verificationRuleId",
          "endpoint",
          "attemptedAt",
          "attempt",
          "nextAttemptAt",
          "outcome"
        ]
      }
    }
  }
}
