Repository: TBD54566975/ssi-service
Pull request #466 (2023-05-22 18:04:40)

rename issuing to issuance
keep this in line with the rest of our APIs

codecov-commenter: ## [Codecov](https://app.codecov.io/gh/TBD54566975/ssi-service/pull/466?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=TBD54566975) Report
> Merging [#466](https://app.codecov.io/gh/TBD54566975/ssi-service/pull/466?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=TBD54566975) (a048816) into [main](https://app.codecov.io/gh/TBD54566975/ssi-service/commit/cd833ea12cd5adadc3ba421ced6baf9db6b4883b?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=TBD54566975) (cd833ea) will **not change** coverage.
> The diff coverage is `7.69%`.

```diff
@@           Coverage Diff           @@
##             main     #466   +/-   ##
=======================================
  Coverage   21.46%   21.46%           
=======================================
  Files          49       49           
  Lines        5375     5375           
=======================================
  Hits         1154     1154           
  Misses       4037     4037           
  Partials      184      184           
```


| [Impacted Files](https://app.codecov.io/gh/TBD54566975/ssi-service/pull/466?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=TBD54566975) | Coverage Δ | |
|---|---|---|
| [config/config.go](https://app.codecov.io/gh/TBD54566975/ssi-service/pull/466?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=TBD54566975#diff-Y29uZmlnL2NvbmZpZy5nbw==) | `15.48% <0.00%> (ø)` | |
| [pkg/server/router/issuance.go](https://app.codecov.io/gh/TBD54566975/ssi-service/pull/466?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=TBD54566975#diff-cGtnL3NlcnZlci9yb3V0ZXIvaXNzdWFuY2UuZ28=) | `0.00% <0.00%> (ø)` | |
| [pkg/server/server.go](https://app.codecov.io/gh/TBD54566975/ssi-service/pull/466?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=TBD54566975#diff-cGtnL3NlcnZlci9zZXJ2ZXIuZ28=) | `81.46% <100.00%> (ø)` | |



Patch:
diff --git a/config/config.go b/config/config.go
index bece349..ad96587 100644
--- a/config/config.go
+++ b/config/config.go
@@ -65,15 +65,15 @@ type ServerConfig struct {
 	EnableAllowAllCORS  bool          `toml:"enable_allow_all_cors" conf:"default:false"`
 }
 
-type IssuingServiceConfig struct {
+type IssuanceServiceConfig struct {
 	*BaseServiceConfig
 }
 
-func (s *IssuingServiceConfig) IsEmpty() bool {
+func (s *IssuanceServiceConfig) IsEmpty() bool {
 	if s == nil {
 		return true
 	}
-	return reflect.DeepEqual(s, &IssuingServiceConfig{})
+	return reflect.DeepEqual(s, &IssuanceServiceConfig{})
 }
 
 // ServicesConfig represents configurable properties for the components of the SSI Service
@@ -86,14 +86,14 @@ type ServicesConfig struct {
 	ServiceEndpoint string           `toml:"service_endpoint"`
 
 	// Embed all service-specific configs here. The order matters: from which should be instantiated first, to last
-	KeyStoreConfig       KeyStoreServiceConfig     `toml:"keystore,omitempty"`
-	DIDConfig            DIDServiceConfig          `toml:"did,omitempty"`
-	IssuingServiceConfig IssuingServiceConfig      `toml:"issuing,omitempty"`
-	SchemaConfig         SchemaServiceConfig       `toml:"schema,omitempty"`
-	CredentialConfig     CredentialServiceConfig   `toml:"credential,omitempty"`
-	ManifestConfig       ManifestServiceConfig     `toml:"manifest,omitempty"`
-	PresentationConfig   PresentationServiceConfig `toml:"presentation,omitempty"`
-	WebhookConfig        WebhookServiceConfig      `toml:"webhook,omitempty"`
+	KeyStoreConfig        KeyStoreServiceConfig     `toml:"keystore,omitempty"`
+	DIDConfig             DIDServiceConfig          `toml:"did,omitempty"`
+	IssuanceServiceConfig IssuanceServiceConfig     `toml:"issuance,omitempty"`
+	SchemaConfig          SchemaServiceConfig       `toml:"schema,omitempty"`
+	CredentialConfig      CredentialServiceConfig   `toml:"credential,omitempty"`
+	ManifestConfig        ManifestServiceConfig     `toml:"manifest,omitempty"`
+	PresentationConfig    PresentationServiceConfig `toml:"presentation,omitempty"`
+	WebhookConfig         WebhookServiceConfig      `toml:"webhook,omitempty"`
 }
 
 // BaseServiceConfig represents configurable properties for a specific component of the SSI Service
@@ -293,8 +293,8 @@ func loadDefaultServicesConfig(config *SSIServiceConfig) {
 		PresentationConfig: PresentationServiceConfig{
 			BaseServiceConfig: &BaseServiceConfig{Name: "presentation"},
 		},
-		IssuingServiceConfig: IssuingServiceConfig{
-			BaseServiceConfig: &BaseServiceConfig{Name: "issuing"},
+		IssuanceServiceConfig: IssuanceServiceConfig{
+			BaseServiceConfig: &BaseServiceConfig{Name: "issuance"},
 		},
 		WebhookConfig: WebhookServiceConfig{
 			BaseServiceConfig: &BaseServiceConfig{Name: "webhook"},
diff --git a/config/config.toml.example b/config/config.toml.example
index 8716aeb..7a88ee0 100644
--- a/config/config.toml.example
+++ b/config/config.toml.example
@@ -59,8 +59,8 @@ local_resolution_methods = ["key", "web", "pkh", "peer"]
 [services.schema]
 name = "schema"
 
-[services.issuing]
-name = "issuing"
+[services.issuance]
+name = "issuance"
 
 [services.credential]
 name = "credential"
diff --git a/config/dev.toml b/config/dev.toml
index b29b13a..883d704 100644
--- a/config/dev.toml
+++ b/config/dev.toml
@@ -62,12 +62,12 @@ universal_resolver_methods = ["ion"]
 [services.schema]
 name = "schema"
 
-[services.issuing]
-name = "issuing"
-
 [services.credential]
 name = "credential"
 
+[services.issuance]
+name = "issuance"
+
 [services.manifest]
 name = "manifest"
 
diff --git a/config/prod.toml b/config/prod.toml
index 7d3d06b..f56c178 100644
--- a/config/prod.toml
+++ b/config/prod.toml
@@ -57,6 +57,9 @@ name = "schema"
 [services.credential]
 name = "credential"
 
+[services.issuance]
+name = "issuance"
+
 [services.manifest]
 name = "manifest"
 
diff --git a/doc/docs.go b/doc/docs.go
index 2c0c5d5..fa6e942 100644
--- a/doc/docs.go
+++ b/doc/docs.go
@@ -5,7 +5,7 @@ package doc
 import "github.com/swaggo/swag/v2"
 
 const docTemplate = `{
-    "schemes": {{ marshal .Schemes }},"swagger":"2.0","info":{"description":"{{escape .Description}}","title":"{{.Title}}","contact":{"name":"TBD","url":"https://github.com/TBD54566975/ssi-service/issues","email":"tbd-developer@squareup.com"},"license":{"name":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"},"version":"{{.Version}}"},"host":"{{.Host}}","basePath":"{{.BasePath}}","paths":{"/health":{"get":{"description":"Health is a simple handler that always responds with a 200 OK","consumes":["application/json"],"produces":["application/json"],"tags":["HealthCheck"],"summary":"Health Check","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetHealthCheckResponse"}}}}},"/readiness":{"get":{"description":"Readiness runs a number of application specific checks to see if all the relied upon services are\nhealthy.","consumes":["application/json"],"produces":["application/json"],"tags":["Readiness"],"summary":"Readiness","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetReadinessResponse"}}}}},"/v1/credentials":{"get":{"description":"Checks for the presence of a query parameter and calls the associated filtered get method. Only one parameter is allowed to be specified.","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Get Credentials","parameters":[{"type":"string","example":"did:key:z6MkiTBz1ymuepAQ4HEHYSF1H8quG5GLVVQR3djdX3mDooWp","description":"The issuer id","name":"issuer","in":"query"},{"type":"string","description":"The credentialSchema.id value to filter by","name":"schema","in":"query"},{"type":"string","description":"The credentialSubject.id value to filter by","name":"subject","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetCredentialsResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Create a verifiable credential","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Create Credential","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateCredentialRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreateCredentialResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/credentials/status/{id}":{"get":{"description":"Get credential status list by id.","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Get Credential Status List","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetCredentialStatusListResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/credentials/verification":{"put":{"description":"Verify a given credential by its id. The system does the following levels of verification:\n1. Makes sure the credential has a valid signature\n2. Makes sure the credential has is not expired\n3. Makes sure the credential complies with the VC Data Model\n4. If the credential has a schema, makes sure its data complies with the schema","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Verify Credential","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.VerifyCredentialRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.VerifyCredentialResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/credentials/{id}":{"get":{"description":"Get credential by id","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Get Credential","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetCredentialResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"delete":{"description":"Delete credential by ID","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Delete Credentials","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/credentials/{id}/status":{"get":{"description":"Get credential status by id","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Get Credential Status","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetCredentialStatusResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Update a credential's status","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Update Credential Status","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.UpdateCredentialStatusRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.UpdateCredentialStatusResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/dids":{"get":{"description":"Get supported DID method","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Get DID Methods","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetDIDMethodsResponse"}}}}},"/v1/dids/resolver/{id}":{"get":{"description":"Resolve a DID that may not be stored in this service","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Resolve a DID","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.ResolveDIDResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}}},"/v1/dids/{method}":{"get":{"description":"Get DIDs by method. Checks for an optional \"deleted=true\" query parameter, which exclusively returns DIDs that have been \"Soft Deleted\".","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Get DIDs","parameters":[{"type":"boolean","description":"When true, returns soft-deleted DIDs. Otherwise, returns DIDs that have not been soft-deleted. Default is false.","name":"deleted","in":"query"},{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.GetDIDsRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetDIDsByMethodResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Creates a fully custodial DID document with the given method. The document created is stored internally\nand can be retrieved using the GetOperation. Method dependent registration (for example, DID web\nregistration) is left up to the clients of this API. The private key(s) created by the method are stored\ninternally never leave the service boundary.","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Create DID Document","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateDIDByMethodRequest"}},{"type":"string","description":"Method","name":"method","in":"path","required":true}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreateDIDByMethodResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/dids/{method}/{id}":{"get":{"description":"Get DID by method","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Get DID","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateDIDByMethodRequest"}},{"type":"string","description":"Method","name":"method","in":"path","required":true},{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetDIDByMethodResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"When this is called with the correct did method and id it will flip the softDelete flag to true for the db entry.\nA user can still get the did if they know the DID ID, and the did keys will still exist, but this did will not show up in the GetDIDsByMethod call\nThis facilitates a clean SSI-Service Admin UI but not leave any hanging VCs with inaccessible hanging DIDs.\nSoft Deletes DID by method","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Soft Delete DID","parameters":[{"type":"string","description":"Method","name":"method","in":"path","required":true},{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/issuancetemplates":{"put":{"description":"Create issuance template","consumes":["application/json"],"produces":["application/json"],"tags":["IssuingAPI"],"summary":"Create issuance template","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateIssuanceTemplateRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.IssuanceTemplate"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/issuancetemplates/{id}":{"get":{"description":"Get an issuance template by its id","consumes":["application/json"],"produces":["application/json"],"tags":["IssuingAPI"],"summary":"Get issuance template","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.IssuanceTemplate"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Delete issuance template by ID","consumes":["application/json"],"produces":["application/json"],"tags":["IssuingAPI"],"summary":"Delete issuance template","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/keys":{"put":{"description":"Stores a key to be used by the service","consumes":["application/json"],"produces":["application/json"],"tags":["KeyStoreAPI"],"summary":"Store Key","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.StoreKeyRequest"}}],"responses":{"201":{"description":"Created"},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/keys/{id}":{"get":{"description":"Get details about a stored key","consumes":["application/json"],"produces":["application/json"],"tags":["KeyStoreAPI"],"summary":"Get Details For Key","parameters":[{"type":"string","description":"ID of the key to get","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetKeyDetailsResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Marks the stored key as being revoked, along with the timestamps of when it was revoked. NB: the key can still be used for signing. This will likely be addressed before v1 is released.","consumes":["application/json"],"produces":["application/json"],"tags":["KeyStoreAPI"],"summary":"Revoke Key","parameters":[{"type":"string","description":"ID of the key to revoke","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests":{"get":{"description":"Checks for the presence of a query parameter and calls the associated filtered get method","consumes":["application/json"],"produces":["application/json"],"tags":["ManifestAPI"],"summary":"Get manifests","parameters":[{"type":"string","description":"string issuer","name":"issuer","in":"query"},{"type":"string","description":"string schema","name":"schema","in":"query"},{"type":"string","description":"string subject","name":"subject","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetManifestsResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Create manifest","consumes":["application/json"],"produces":["application/json"],"tags":["ManifestAPI"],"summary":"Create manifest","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateManifestRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreateManifestResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/applications":{"get":{"description":"Gets all the existing applications.","consumes":["application/json"],"produces":["application/json"],"tags":["ApplicationAPI"],"summary":"Get applications","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetApplicationsResponse"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Submit a credential application in response to a credential manifest. The request body is expected to","consumes":["application/json"],"produces":["application/json"],"tags":["ApplicationAPI"],"summary":"Submit application","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.SubmitApplicationRequest"}}],"responses":{"201":{"description":"Operation with a SubmitApplicationResponse type in the ` + "`" + `result.response` + "`" + ` field.","schema":{"$ref":"#/definitions/pkg_server_router.Operation"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/applications/{id}":{"get":{"description":"Get application by id","consumes":["application/json"],"produces":["application/json"],"tags":["ApplicationAPI"],"summary":"Get application","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetApplicationResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Delete application by ID","consumes":["application/json"],"produces":["application/json"],"tags":["ApplicationAPI"],"summary":"Delete applications","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/applications/{id}/review":{"put":{"description":"Reviewing an application either fulfills or denies the credential.","consumes":["application/json"],"produces":["application/json"],"tags":["ApplicationAPI"],"summary":"Reviews an application","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.ReviewApplicationRequest"}}],"responses":{"201":{"description":"Credential Response","schema":{"$ref":"#/definitions/pkg_server_router.SubmitApplicationResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/responses":{"get":{"description":"Checks for the presence of a query parameter and calls the associated filtered get method","consumes":["application/json"],"produces":["application/json"],"tags":["ResponseAPI"],"summary":"Get responses","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetResponsesResponse"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/responses/{id}":{"get":{"description":"Get response by id","consumes":["application/json"],"produces":["application/json"],"tags":["ResponseAPI"],"summary":"Get response","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetResponseResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"delete":{"description":"Delete response by ID","consumes":["application/json"],"produces":["application/json"],"tags":["ResponseAPI"],"summary":"Delete responses","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/{id}":{"get":{"description":"Get a credential manifest by its id","consumes":["application/json"],"produces":["application/json"],"tags":["ManifestAPI"],"summary":"Get manifest","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetManifestResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Delete manifest by ID","consumes":["application/json"],"produces":["application/json"],"tags":["ManifestAPI"],"summary":"Delete manifests","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/operations":{"get":{"description":"List operations according to the request","consumes":["application/json"],"produces":["application/json"],"tags":["OperationAPI"],"summary":"List operations","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.GetOperationsRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetOperationsResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/operations/cancel/{id}":{"get":{"description":"Cancels an ongoing operation, if possible.","consumes":["application/json"],"produces":["application/json"],"tags":["OperationAPI"],"summary":"Cancel an ongoing operation","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.Operation"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/operations/{id}":{"get":{"description":"Get operation by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["OperationAPI"],"summary":"Get an operation","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.Operation"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/presentation/definition":{"put":{"description":"Create presentation definition","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationDefinitionAPI"],"summary":"Create PresentationDefinition","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreatePresentationDefinitionRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreatePresentationDefinitionResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/presentation/definition/{id}":{"get":{"description":"Get a presentation definition by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationDefinitionAPI"],"summary":"Get PresentationDefinition","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetPresentationDefinitionResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Delete a presentation definition by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationDefinitionAPI"],"summary":"Delete PresentationDefinition","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/presentations/definitions":{"get":{"description":"Lists all the existing presentation definitions","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationDefinitionAPI"],"summary":"List Presentation Definitions","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.ListDefinitionsRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.ListDefinitionsResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/presentations/submissions":{"get":{"description":"List existing submissions according to a filtering query. The ` + "`" + `filter` + "`" + ` field follows the syntax described in https://google.aip.dev/160.","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationSubmissionAPI"],"summary":"List Submissions","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.ListSubmissionRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.ListSubmissionResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Creates a submission in this server ready to be reviewed.","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationSubmissionAPI"],"summary":"Create Submission","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateSubmissionRequest"}}],"responses":{"201":{"description":"The type of response is Submission once the operation has finished.","schema":{"$ref":"#/definitions/pkg_server_router.Operation"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/presentations/submissions/{id}":{"get":{"description":"Get a submission by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationSubmissionAPI"],"summary":"Get Submission","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetSubmissionResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}}},"/v1/presentations/submissions/{id}/review":{"put":{"description":"Reviews a pending submission. After this method is called, the operation with ` + "`" + `id==presentations/submissions/{submission_id}` + "`" + ` will be updated with the result of this invocation.","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationSubmissionAPI"],"summary":"Review a pending submission","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.ReviewSubmissionRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.ReviewSubmissionResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/schemas":{"get":{"description":"Get schemas","consumes":["application/json"],"produces":["application/json"],"tags":["SchemaAPI"],"summary":"Get Schemas","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetSchemasResponse"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Create schema","consumes":["application/json"],"produces":["application/json"],"tags":["SchemaAPI"],"summary":"Create SchemaID","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateSchemaRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreateSchemaResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/schemas/verification":{"put":{"description":"Verify a given schema by its id","consumes":["application/json"],"produces":["application/json"],"tags":["SchemaAPI"],"summary":"Verify SchemaID","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.VerifySchemaRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.VerifySchemaResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}}},"/v1/schemas/{id}":{"get":{"description":"Get a schema by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["SchemaAPI"],"summary":"Get SchemaID","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetSchemaResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Delete a schema by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["SchemaAPI"],"summary":"Delete SchemaID","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/webhooks":{"get":{"description":"Get webhooks","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Get Webhooks","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetWebhooksResponse"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Create webhook","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Create Webhook","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateWebhookRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreateWebhookResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/webhooks/nouns":{"get":{"description":"Get supported nouns for webhook generation","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Get Supported Nouns","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.GetSupportedNounsResponse"}}}}},"/v1/webhooks/verbs":{"get":{"description":"Get supported verbs for webhook generation","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Get Supported Verbs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.GetSupportedVerbsResponse"}}}}},"/v1/webhooks/{noun}/{verb}":{"get":{"description":"Get a webhook by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Get Webhook","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetWebhookResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}}},"/v1/webhooks/{noun}/{verb}/{url}":{"delete":{"description":"Delete a webhook by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Delete Webhook","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}}},"definitions":{"credential.CredentialSchema":{"type":"object","required":["id","type"],"properties":{"id":{"type":"string"},"type":{"type":"string"}}},"credential.CredentialSubject":{"type":"object","additionalProperties":{}},"credential.Prohibition":{"type":"object","properties":{"action":{"type":"array","items":{"type":"string"}},"assignee":{"type":"string"},"assigner":{"type":"string"},"target":{"type":"string"}}},"credential.RefreshService":{"type":"object","required":["id","type"],"properties":{"id":{"type":"string"},"type":{"type":"string"}}},"credential.TermsOfUse":{"type":"object","properties":{"id":{"type":"string"},"profile":{"type":"string"},"prohibition":{"type":"array","items":{"$ref":"#/definitions/credential.Prohibition"}},"type":{"type":"string"}}},"credential.VerifiableCredential":{"type":"object","required":["@context","credentialSubject","issuanceDate","issuer","type"],"properties":{"@context":{"description":"Either a string or set of strings"},"credentialSchema":{"$ref":"#/definitions/credential.CredentialSchema"},"credentialStatus":{},"credentialSubject":{"description":"This is where the subject's ID *may* be present","allOf":[{"$ref":"#/definitions/credential.CredentialSubject"}]},"evidence":{"type":"array","items":{}},"expirationDate":{"type":"string"},"id":{"type":"string"},"issuanceDate":{"description":"https://www.w3.org/TR/xmlschema11-2/#dateTimes","type":"string"},"issuer":{"description":"either a URI or an object containing an ` + "`" + `id` + "`" + ` property."},"proof":{"description":"For embedded proof support\nProof is a digital signature over a credential https://www.w3.org/TR/2021/REC-vc-data-model-20211109/#proofs-signatures"},"refreshService":{"$ref":"#/definitions/credential.RefreshService"},"termsOfUse":{"type":"array","items":{"$ref":"#/definitions/credential.TermsOfUse"}},"type":{"description":"Either a string or a set of strings https://www.w3.org/TR/2021/REC-vc-data-model-20211109/#types"}}},"credential.VerifiablePresentation":{"type":"object","required":["type"],"properties":{"@context":{"description":"Either a string or set of strings"},"holder":{"type":"string"},"id":{"type":"string"},"presentation_submission":{"description":"an optional field as a part of https://identity.foundation/presentation-exchange/#embed-targets"},"proof":{},"type":{},"verifiableCredential":{"description":"Verifiable credential could be our object model, a JWT, or any other valid credential representation","type":"array","items":{}}}},"crypto.KeyType":{"type":"string","enum":["Ed25519","X25519","secp256k1","secp256k1-ECDSA","P-224","P-256","P-384","P-521","RSA","Dilithium2","Dilithium3","Dilithium5"],"x-enum-varnames":["Ed25519","X25519","SECP256k1","SECP256k1ECDSA","P224","P256","P384","P521","RSA","Dilithium2","Dilithium3","Dilithium5"]},"crypto.SignatureAlgorithm":{"type":"string","enum":["EdDSA","ES256K","ES256","ES384","PS256","Dilithium2","Dilithium3","Dilithium5"],"x-enum-varnames":["EdDSA","ES256K","ES256","ES384","PS256","Dilithium2Sig","Dilithium3Sig","Dilithium5Sig"]},"did.Document":{"type":"object","properties":{"@context":{},"alsoKnownAs":{"type":"string"},"assertionMethod":{"type":"array","items":{}},"authentication":{"type":"array","items":{}},"capabilityDelegation":{"type":"array","items":{}},"capabilityInvocation":{"type":"array","items":{}},"controller":{"type":"string"},"id":{"description":"As per https://www.w3.org/TR/did-core/#did-subject intermediate representations of DID Documents do not\nrequire an ID property. The provided test vectors demonstrate IRs. As such, the property is optional.","type":"string"},"keyAgreement":{"type":"array","items":{}},"service":{"type":"array","items":{"$ref":"#/definitions/github_com_TBD54566975_ssi-sdk_did.Service"}},"verificationMethod":{"type":"array","items":{"$ref":"#/definitions/did.VerificationMethod"}}}},"did.Method":{"type":"string","enum":["key","peer","pkh","web","ion","jwk"],"x-enum-varnames":["KeyMethod","PeerMethod","PKHMethod","WebMethod","IONMethod","JWKMethod"]},"did.VerificationMethod":{"type":"object","required":["controller","id","type"],"properties":{"blockchainAccountId":{"description":"for PKH DIDs - https://github.com/w3c-ccg/did-pkh/blob/90b28ad3c18d63822a8aab3c752302aa64fc9382/did-pkh-method-draft.md","type":"string"},"controller":{"type":"string"},"id":{"type":"string"},"publicKeyBase58":{"type":"string"},"publicKeyJwk":{"description":"must conform to https://datatracker.ietf.org/doc/html/rfc7517","allOf":[{"$ref":"#/definitions/jwx.PublicKeyJWK"}]},"publicKeyMultibase":{"description":"https://datatracker.ietf.org/doc/html/draft-multiformats-multibase-03","type":"string"},"type":{"type":"string"}}},"exchange.ClaimFormat":{"type":"object","properties":{"jwt":{"$ref":"#/definitions/exchange.JWTType"},"jwt_vc":{"$ref":"#/definitions/exchange.JWTType"},"jwt_vp":{"$ref":"#/definitions/exchange.JWTType"},"ldp":{"$ref":"#/definitions/exchange.LDPType"},"ldp_vc":{"$ref":"#/definitions/exchange.LDPType"},"ldp_vp":{"$ref":"#/definitions/exchange.LDPType"}}},"exchange.Constraints":{"type":"object","properties":{"fields":{"type":"array","items":{"$ref":"#/definitions/exchange.Field"}},"is_holder":{"type":"array","items":{"$ref":"#/definitions/exchange.RelationalConstraint"}},"limit_disclosure":{"$ref":"#/definitions/exchange.Preference"},"same_subject":{"type":"array","items":{"$ref":"#/definitions/exchange.RelationalConstraint"}},"statuses":{"description":"https://identity.foundation/presentation-exchange/#credential-status-constraint-feature","allOf":[{"$ref":"#/definitions/exchange.CredentialStatus"}]},"subject_is_issuer":{"description":"https://identity.foundation/presentation-exchange/#relational-constraint-feature","allOf":[{"$ref":"#/definitions/exchange.Preference"}]}}},"exchange.CredentialStatus":{"type":"object","properties":{"active":{"type":"object","properties":{"directive":{"$ref":"#/definitions/exchange.Preference"}}},"revoked":{"type":"object","properties":{"directive":{"$ref":"#/definitions/exchange.Preference"}}},"suspended":{"type":"object","properties":{"directive":{"$ref":"#/definitions/exchange.Preference"}}}}},"exchange.Field":{"type":"object","required":["path"],"properties":{"filter":{"$ref":"#/definitions/exchange.Filter"},"id":{"type":"string"},"intent_to_retain":{"description":"https://identity.foundation/presentation-exchange/spec/v2.0.0/#retention-feature","type":"boolean"},"name":{"type":"string"},"optional":{"type":"boolean"},"path":{"type":"array","items":{"type":"string"}},"predicate":{"description":"If a predicate property is present, filter must be too\nhttps://identity.foundation/presentation-exchange/#predicate-feature","allOf":[{"$ref":"#/definitions/exchange.Preference"}]},"purpose":{"type":"string"}}},"exchange.Filter":{"type":"object","properties":{"additionalProperties":{"type":"boolean"},"allOf":{},"const":{},"enum":{"type":"array","items":{}},"exclusiveMaximum":{},"exclusiveMinimum":{},"format":{"type":"string"},"maxLength":{"type":"integer"},"maximum":{},"minLength":{"type":"integer"},"minimum":{},"not":{},"oneOf":{},"pattern":{"type":"string"},"properties":{},"required":{"type":"array","items":{"type":"string"}},"type":{"type":"string"}}},"exchange.InputDescriptor":{"type":"object","required":["constraints","id"],"properties":{"constraints":{"$ref":"#/definitions/exchange.Constraints"},"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"group":{"description":"Must match a grouping strings listed in the ` + "`" + `from` + "`" + ` values of a submission requirement rule","type":"array","items":{"type":"string"}},"id":{"description":"Must be unique within the Presentation Definition","type":"string"},"name":{"type":"string"},"purpose":{"description":"Purpose for which claim's data is being requested","type":"string"}}},"exchange.JWTType":{"type":"object","required":["alg"],"properties":{"alg":{"type":"array","items":{"$ref":"#/definitions/crypto.SignatureAlgorithm"}}}},"exchange.LDPType":{"type":"object","required":["proof_type"],"properties":{"proof_type":{"type":"array","items":{"type":"string"}}}},"exchange.Preference":{"type":"string","enum":["required","preferred","allowed","disallowed"],"x-enum-varnames":["Required","Preferred","Allowed","Disallowed"]},"exchange.PresentationDefinition":{"type":"object","required":["id","input_descriptors"],"properties":{"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"frame":{"description":"https://identity.foundation/presentation-exchange/#json-ld-framing-feature"},"id":{"type":"string"},"input_descriptors":{"type":"array","items":{"$ref":"#/definitions/exchange.InputDescriptor"}},"name":{"type":"string"},"purpose":{"type":"string"},"submission_requirements":{"type":"array","items":{"$ref":"#/definitions/exchange.SubmissionRequirement"}}}},"exchange.PresentationSubmission":{"type":"object","required":["definition_id","descriptor_map","id"],"properties":{"definition_id":{"type":"string"},"descriptor_map":{"type":"array","items":{"$ref":"#/definitions/exchange.SubmissionDescriptor"}},"id":{"type":"string"}}},"exchange.RelationalConstraint":{"type":"object","required":["directive","field_id"],"properties":{"directive":{"$ref":"#/definitions/exchange.Preference"},"field_id":{"type":"array","items":{"type":"string"}}}},"exchange.Selection":{"type":"string","enum":["all","pick"],"x-enum-varnames":["All","Pick"]},"exchange.SubmissionDescriptor":{"type":"object","required":["format","id","path"],"properties":{"format":{"type":"string"},"id":{"description":"Must match the ` + "`" + `id` + "`" + ` property of the corresponding input descriptor","type":"string"},"path":{"type":"string"},"path_nested":{"$ref":"#/definitions/exchange.SubmissionDescriptor"}}},"exchange.SubmissionRequirement":{"type":"object","required":["rule"],"properties":{"count":{"type":"integer","minimum":1},"from":{"type":"string"},"from_nested":{"type":"array","items":{"$ref":"#/definitions/exchange.SubmissionRequirement"}},"max":{"type":"integer"},"min":{"type":"integer"},"name":{"type":"string"},"purpose":{"type":"string"},"rule":{"$ref":"#/definitions/exchange.Selection"}}},"github_com_TBD54566975_ssi-sdk_did.Service":{"type":"object","required":["id","serviceEndpoint","type"],"properties":{"accept":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"routingKeys":{"type":"array","items":{"type":"string"}},"serviceEndpoint":{"description":"A string, map, or set composed of one or more strings and/or maps\nAll string values must be valid URIs"},"type":{"type":"string"}}},"github_com_tbd54566975_ssi-service_internal_credential.Container":{"type":"object","properties":{"credential":{"$ref":"#/definitions/credential.VerifiableCredential"},"credentialJWT":{"type":"string"},"id":{"description":"Credential ID","type":"string"},"issuerKID":{"type":"string"},"revoked":{"type":"boolean"},"suspended":{"type":"boolean"}}},"github_com_tbd54566975_ssi-service_pkg_service_framework.Status":{"type":"object","properties":{"message":{"description":"When ` + "`" + `status` + "`" + ` is ` + "`" + `not_ready` + "`" + `, then message contains explanation of why it's not ready.","type":"string"},"status":{"description":"Either ` + "`" + `ready` + "`" + ` or ` + "`" + `not_ready` + "`" + `.","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_framework.StatusState"}]}}},"github_com_tbd54566975_ssi-service_pkg_service_framework.StatusState":{"type":"string","enum":["ready","not_ready"],"x-enum-varnames":["StatusReady","StatusNotReady"]},"github_com_tbd54566975_ssi-service_pkg_service_issuing.ClaimTemplates":{"type":"object","additionalProperties":{}},"github_com_tbd54566975_ssi-service_pkg_service_issuing.CredentialTemplate":{"type":"object","properties":{"credentialInputDescriptor":{"description":"Optional.\nWhen present, it's the ID of the input descriptor in the application. Corresponds to one of the\nPresentationDefinition.InputDescriptors[].ID in the credential manifest. When creating a credential, the base\ndata will be populated from the provided submission that matches this ID.\nWhen absent, there will be no base data for the credentials created. Additionally, no JSON path strings in\nClaimTemplates.Data will be resolved.","type":"string"},"data":{"description":"Data that will be used to determine credential claims.\nValues may be json path like strings, or any other JSON primitive. Each entry will be used to come up with a\nclaim about the credentialSubject in the credential that will be issued.","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.ClaimTemplates"}]},"expiry":{"description":"Parameter to determine the expiry of the credential.","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.TimeLike"}]},"id":{"description":"ID corresponding to an OutputDescriptor.ID from the manifest.","type":"string"},"revocable":{"description":"Whether the credentials created should be revocable.","type":"boolean"},"schema":{"description":"ID of the CredentialSchema to be used for the issued credential.","type":"string"}}},"github_com_tbd54566975_ssi-service_pkg_service_issuing.IssuanceTemplate":{"type":"object","required":["credentialManifest","issuer","issuerKid"],"properties":{"credentialManifest":{"description":"ID of the credential manifest that this template corresponds to.","type":"string"},"credentials":{"description":"Info required to create a credential from a credential application.","type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.CredentialTemplate"}},"id":{"description":"ID of this template.","type":"string"},"issuer":{"description":"ID of the issuer that will be issuing the credentials.","type":"string"},"issuerKid":{"description":"ID of the key that will be used to sign the credentials.","type":"string"}}},"github_com_tbd54566975_ssi-service_pkg_service_issuing.TimeLike":{"type":"object","properties":{"duration":{"description":"For a fixed offset from when it was issued.","allOf":[{"$ref":"#/definitions/time.Duration"}]},"time":{"description":"For fixed time in the future.","type":"string"}}},"github_com_tbd54566975_ssi-service_pkg_service_manifest_model.CredentialOverride":{"type":"object","properties":{"data":{"description":"Data that will be used to determine credential claims.","type":"object","additionalProperties":{}},"expiry":{"description":"Parameter to determine the expiry of the credential.","type":"string"},"revocable":{"description":"Whether the credentials created should be revocable.","type":"boolean"}}},"github_com_tbd54566975_ssi-service_pkg_service_presentation_model.Submission":{"type":"object","required":["status"],"properties":{"reason":{"description":"The reason why the submission was approved or denied.","type":"string"},"status":{"description":"One of {` + "`" + `pending` + "`" + `, ` + "`" + `approved` + "`" + `, ` + "`" + `denied` + "`" + `, ` + "`" + `cancelled` + "`" + `}.","type":"string"},"verifiablePresentation":{"description":"The verifiable presentation containing the presentation_submission along with the credentials presented.","allOf":[{"$ref":"#/definitions/credential.VerifiablePresentation"}]}}},"github_com_tbd54566975_ssi-service_pkg_service_webhook.GetSupportedNounsResponse":{"type":"object","properties":{"nouns":{"type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Noun"}}}},"github_com_tbd54566975_ssi-service_pkg_service_webhook.GetSupportedVerbsResponse":{"type":"object","properties":{"verbs":{"type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Verb"}}}},"github_com_tbd54566975_ssi-service_pkg_service_webhook.Noun":{"type":"string","enum":["Credential","DID","Manifest","SchemaID","Presentation","Application","Submission"],"x-enum-varnames":["Credential","DID","Manifest","Schema","Presentation","Application","Submission"]},"github_com_tbd54566975_ssi-service_pkg_service_webhook.Verb":{"type":"string","enum":["Create","Delete"],"x-enum-varnames":["Create","Delete"]},"github_com_tbd54566975_ssi-service_pkg_service_webhook.Webhook":{"type":"object","required":["noun","urls","verb"],"properties":{"noun":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Noun"},"urls":{"type":"array","items":{"type":"string"}},"verb":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Verb"}}},"jwx.PublicKeyJWK":{"type":"object","required":["kty"],"properties":{"alg":{"type":"string"},"crv":{"type":"string"},"e":{"type":"string"},"key_ops":{"type":"string"},"kid":{"type":"string"},"kty":{"type":"string"},"n":{"type":"string"},"use":{"type":"string"},"x":{"type":"string"},"y":{"type":"string"}}},"manifest.CredentialApplication":{"type":"object","required":["format","id","manifest_id","spec_version"],"properties":{"applicant":{"type":"string"},"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"id":{"type":"string"},"manifest_id":{"type":"string"},"presentation_submission":{"description":"Must be present if the corresponding manifest contains a presentation_definition","allOf":[{"$ref":"#/definitions/exchange.PresentationSubmission"}]},"spec_version":{"type":"string"}}},"manifest.CredentialManifest":{"type":"object","required":["id","issuer","output_descriptors","spec_version"],"properties":{"description":{"type":"string"},"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"id":{"type":"string"},"issuer":{"$ref":"#/definitions/manifest.Issuer"},"name":{"type":"string"},"output_descriptors":{"type":"array","items":{"$ref":"#/definitions/manifest.OutputDescriptor"}},"presentation_definition":{"$ref":"#/definitions/exchange.PresentationDefinition"},"spec_version":{"type":"string"}}},"manifest.CredentialResponse":{"type":"object","required":["id","manifest_id","spec_version"],"properties":{"applicant":{"type":"string"},"application_id":{"type":"string"},"denial":{"type":"object","required":["reason"],"properties":{"input_descriptors":{"type":"array","items":{"type":"string"}},"reason":{"type":"string"}}},"fulfillment":{"type":"object","required":["descriptor_map"],"properties":{"descriptor_map":{"type":"array","items":{"$ref":"#/definitions/exchange.SubmissionDescriptor"}}}},"id":{"type":"string"},"manifest_id":{"type":"string"},"spec_version":{"type":"string"}}},"manifest.Issuer":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"styles":{"description":"an object or URI as defined by the DIF Entity Styles specification\nhttps://identity.foundation/wallet-rendering/#entity-styles","allOf":[{"$ref":"#/definitions/rendering.EntityStyleDescriptor"}]}}},"manifest.OutputDescriptor":{"type":"object","required":["id","schema"],"properties":{"description":{"type":"string"},"display":{"description":"both below: an object or URI as defined by the DIF Entity Styles specification","allOf":[{"$ref":"#/definitions/rendering.DataDisplay"}]},"id":{"description":"Must be unique within a manifest","type":"string"},"name":{"type":"string"},"schema":{"type":"string"},"styles":{"$ref":"#/definitions/rendering.EntityStyleDescriptor"}}},"pkg_server_router.CreateCredentialRequest":{"type":"object","required":["data","issuer","issuerKid","subject"],"properties":{"@context":{"description":"A context is optional. If not present, we'll apply default, required context values.","type":"string"},"data":{"description":"Claims about the subject. The keys should be predicates (e.g. \"alumniOf\"), and the values can be any object.","type":"object","additionalProperties":{"type":"string"},"example":{"alumniOf":"did_for_uni"}},"expiry":{"description":"Optional. Corresponds to ` + "`" + `expirationDate` + "`" + ` in https://www.w3.org/TR/vc-data-model/#expiration.","type":"string","example":"2020-01-01T19:23:24Z"},"issuer":{"description":"The issuer id.","type":"string","example":"did:key:z6MkiTBz1ymuepAQ4HEHYSF1H8quG5GLVVQR3djdX3mDooWp"},"issuerKid":{"description":"The KID used to sign the credential","type":"string","example":"#z6MkiTBz1ymuepAQ4HEHYSF1H8quG5GLVVQR3djdX3mDooWp"},"revocable":{"description":"Whether this credential can be revoked. When true, the created VC will have the \"credentialStatus\"\nproperty set.","type":"boolean"},"schemaId":{"description":"A schema ID is optional. If present, we'll attempt to look it up and validate the data against it.","type":"string"},"subject":{"description":"The subject id.","type":"string","example":"did:key:z6MkiTBz1ymuepAQ4HEHYSF1H8quG5GLVVQR3djdX3mDooWp"},"suspendable":{"description":"Whether this credential can be suspended. When true, the created VC will have the \"credentialStatus\"\nproperty set.","type":"boolean"}}},"pkg_server_router.CreateCredentialResponse":{"type":"object","properties":{"credential":{"description":"A verifiable credential conformant to the media type ` + "`" + `application/vc+ld+json` + "`" + `.","allOf":[{"$ref":"#/definitions/credential.VerifiableCredential"}]},"credentialJwt":{"description":"The same verifiable credential, but using the syntax defined for the media type ` + "`" + `application/vc+jwt` + "`" + `. See\nhttps://w3c.github.io/vc-jwt/ for more details.","type":"string"}}},"pkg_server_router.CreateDIDByMethodRequest":{"type":"object","required":["keyType"],"properties":{"keyType":{"description":"Identifies the cryptographic algorithm family to use when generating this key.\nOne of the following: \"Ed25519\", \"X25519\", \"secp256k1\", \"P-224\",\"P-256\",\"P-384\", \"P-521\", \"RSA\"","allOf":[{"$ref":"#/definitions/crypto.KeyType"}]},"options":{"description":"Options for creating the DID. Implementation dependent on the method."}}},"pkg_server_router.CreateDIDByMethodResponse":{"type":"object","properties":{"did":{"$ref":"#/definitions/did.Document"}}},"pkg_server_router.CreateIssuanceTemplateRequest":{"type":"object","required":["credentialManifest","issuer","issuerKid"],"properties":{"credentialManifest":{"description":"ID of the credential manifest that this template corresponds to.","type":"string"},"credentials":{"description":"Info required to create a credential from a credential application.","type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.CredentialTemplate"}},"id":{"description":"ID of this template.","type":"string"},"issuer":{"description":"ID of the issuer that will be issuing the credentials.","type":"string"},"issuerKid":{"description":"ID of the key that will be used to sign the credentials.","type":"string"}}},"pkg_server_router.CreateManifestRequest":{"type":"object","required":["format","issuerDid","issuerKid","outputDescriptors"],"properties":{"description":{"type":"string"},"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"issuerDid":{"type":"string"},"issuerKid":{"type":"string"},"issuerName":{"type":"string"},"name":{"type":"string"},"outputDescriptors":{"type":"array","items":{"$ref":"#/definitions/manifest.OutputDescriptor"}},"presentationDefinition":{"$ref":"#/definitions/exchange.PresentationDefinition"}}},"pkg_server_router.CreateManifestResponse":{"type":"object","properties":{"credential_manifest":{"$ref":"#/definitions/manifest.CredentialManifest"},"manifestJwt":{"type":"string"}}},"pkg_server_router.CreatePresentationDefinitionRequest":{"type":"object","required":["author","authorKid","inputDescriptors"],"properties":{"author":{"description":"DID of the author of this presentation definition. The DID must have been previously created with the DID API,\nor the PrivateKey must have been added independently.","type":"string"},"authorKid":{"description":"The privateKey associated with the KID will be used to sign an envelope that contains\nthe created presentation definition.","type":"string"},"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"inputDescriptors":{"type":"array","items":{"$ref":"#/definitions/exchange.InputDescriptor"}},"name":{"type":"string"},"purpose":{"type":"string"},"submissionRequirements":{"type":"array","items":{"$ref":"#/definitions/exchange.SubmissionRequirement"}}}},"pkg_server_router.CreatePresentationDefinitionResponse":{"type":"object","properties":{"presentationDefinitionJwt":{"description":"Signed envelope that contains the PresentationDefinition created using the privateKey of the author of the\ndefinition.","type":"string"},"presentation_definition":{"$ref":"#/definitions/exchange.PresentationDefinition"}}},"pkg_server_router.CreateSchemaRequest":{"type":"object","required":["author","name","schema"],"properties":{"author":{"type":"string"},"authorKid":{"description":"AuthorKID represents the KID of the author's private key to sign the schema. Required if sign is true.","type":"string"},"name":{"type":"string"},"schema":{"$ref":"#/definitions/schema.JSONSchema"},"sign":{"description":"Sign represents whether the schema should be signed by the author. Default is false.\nIf sign is true, the schema will be signed by the author's private key with the specified KID","type":"boolean"}}},"pkg_server_router.CreateSchemaResponse":{"type":"object","properties":{"id":{"type":"string"},"schema":{"$ref":"#/definitions/schema.VCJSONSchema"},"schemaJwt":{"type":"string"}}},"pkg_server_router.CreateSubmissionRequest":{"type":"object","required":["submissionJwt"],"properties":{"submissionJwt":{"type":"string"}}},"pkg_server_router.CreateWebhookRequest":{"type":"object","required":["noun","url","verb"],"properties":{"noun":{"description":"The noun (entity) for the new webhook.eg: Credential","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Noun"}]},"url":{"description":"The URL to post the output of this request to Noun.Verb action to.","type":"string"},"verb":{"description":"The verb for the new webhook.eg: Create","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Verb"}]}}},"pkg_server_router.CreateWebhookResponse":{"type":"object","properties":{"webhook":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Webhook"}}},"pkg_server_router.GetApplicationResponse":{"type":"object","properties":{"application":{"$ref":"#/definitions/manifest.CredentialApplication"},"id":{"type":"string"}}},"pkg_server_router.GetApplicationsResponse":{"type":"object","properties":{"applications":{"type":"array","items":{"$ref":"#/definitions/manifest.CredentialApplication"}}}},"pkg_server_router.GetCredentialResponse":{"type":"object","properties":{"credential":{"$ref":"#/definitions/credential.VerifiableCredential"},"credentialJwt":{"type":"string"},"id":{"type":"string"}}},"pkg_server_router.GetCredentialStatusListResponse":{"type":"object","properties":{"credential":{"description":"Credential where type includes \"VerifiableCredential\" and \"StatusList2021\".","allOf":[{"$ref":"#/definitions/credential.VerifiableCredential"}]},"credentialJwt":{"description":"The JWT signed with the associated issuer's private key.","type":"string"},"id":{"type":"string"}}},"pkg_server_router.GetCredentialStatusResponse":{"type":"object","properties":{"revoked":{"description":"Whether the credential has been revoked.","type":"boolean"},"suspended":{"description":"Whether the credential has been suspended.","type":"boolean"}}},"pkg_server_router.GetCredentialsResponse":{"type":"object","properties":{"credentials":{"description":"Array of credential containers.","type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_internal_credential.Container"}}}},"pkg_server_router.GetDIDByMethodResponse":{"type":"object","properties":{"did":{"$ref":"#/definitions/did.Document"}}},"pkg_server_router.GetDIDMethodsResponse":{"type":"object","properties":{"method":{"type":"array","items":{"$ref":"#/definitions/did.Method"}}}},"pkg_server_router.GetDIDsByMethodResponse":{"type":"object","properties":{"dids":{"type":"array","items":{"$ref":"#/definitions/did.Document"}}}},"pkg_server_router.GetDIDsRequest":{"type":"object","properties":{"filter":{"description":"A standard filter expression conforming to https://google.aip.dev/160.\nNot implemented yet.","type":"string"}}},"pkg_server_router.GetHealthCheckResponse":{"type":"object","properties":{"status":{"description":"Status is always equal to ` + "`" + `OK` + "`" + `.","type":"string"}}},"pkg_server_router.GetKeyDetailsResponse":{"type":"object","properties":{"controller":{"type":"string"},"createdAt":{"type":"string"},"id":{"type":"string"},"type":{"$ref":"#/definitions/crypto.KeyType"}}},"pkg_server_router.GetManifestResponse":{"type":"object","properties":{"credential_manifest":{"$ref":"#/definitions/manifest.CredentialManifest"},"id":{"type":"string"},"manifestJwt":{"type":"string"}}},"pkg_server_router.GetManifestsResponse":{"type":"object","properties":{"manifests":{"type":"array","items":{"$ref":"#/definitions/pkg_server_router.GetManifestResponse"}}}},"pkg_server_router.GetOperationsRequest":{"type":"object","properties":{"filter":{"description":"A standard filter expression conforming to https://google.aip.dev/160.\nFor example: ` + "`" + `done = true` + "`" + `.","type":"string"},"parent":{"description":"The name of the parent's resource. For example: \"/presentation/submissions\".","type":"string"}}},"pkg_server_router.GetOperationsResponse":{"type":"object","properties":{"operations":{"type":"array","items":{"$ref":"#/definitions/pkg_server_router.Operation"}}}},"pkg_server_router.GetPresentationDefinitionResponse":{"type":"object","properties":{"presentationDefinitionJWT":{"description":"Signed envelope that contains the PresentationDefinition created using the privateKey of the author of the\ndefinition.","type":"string"},"presentation_definition":{"$ref":"#/definitions/exchange.PresentationDefinition"}}},"pkg_server_router.GetReadinessResponse":{"type":"object","properties":{"serviceStatuses":{"description":"A map from the name of the service ot the status of that current service.","type":"object","additionalProperties":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_framework.Status"}},"status":{"description":"Overall status of the ssi service.","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_framework.Status"}]}}},"pkg_server_router.GetResponseResponse":{"type":"object","properties":{"credential_response":{"$ref":"#/definitions/manifest.CredentialResponse"},"responseJwt":{"type":"string"},"verifiableCredentials":{"description":"this is an interface type to union Data Integrity and JWT style VCs"}}},"pkg_server_router.GetResponsesResponse":{"type":"object","properties":{"responses":{"type":"array","items":{"$ref":"#/definitions/manifest.CredentialResponse"}}}},"pkg_server_router.GetSchemaResponse":{"type":"object","properties":{"schema":{"$ref":"#/definitions/schema.VCJSONSchema"},"schemaJwt":{"type":"string"}}},"pkg_server_router.GetSchemasResponse":{"type":"object","properties":{"schemas":{"type":"array","items":{"$ref":"#/definitions/pkg_server_router.GetSchemaResponse"}}}},"pkg_server_router.GetSubmissionResponse":{"type":"object","properties":{"submission":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_presentation_model.Submission"}}},"pkg_server_router.GetWebhookResponse":{"type":"object","properties":{"webhook":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Webhook"}}},"pkg_server_router.GetWebhooksResponse":{"type":"object","properties":{"webhooks":{"type":"array","items":{"$ref":"#/definitions/pkg_server_router.GetWebhookResponse"}}}},"pkg_server_router.ListDefinitionsRequest":{"type":"object"},"pkg_server_router.ListDefinitionsResponse":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/definitions/exchange.PresentationDefinition"}}}},"pkg_server_router.ListIssuanceTemplatesResponse":{"type":"object","properties":{"issuanceTemplates":{"type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.IssuanceTemplate"}}}},"pkg_server_router.ListSubmissionRequest":{"type":"object","properties":{"filter":{"description":"A standard filter expression conforming to https://google.aip.dev/160.\nFor example: ` + "`" + `status = \"done\"` + "`" + `.","type":"string"}}},"pkg_server_router.ListSubmissionResponse":{"type":"object","properties":{"submissions":{"type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_presentation_model.Submission"}}}},"pkg_server_router.Operation":{"type":"object","required":["done","id"],"properties":{"done":{"description":"Whether this operation has finished.","type":"boolean"},"id":{"description":"The name of the resource related to this operation. E.g. \"presentations/submissions/\u003cuuid\u003e\"","type":"string"},"result":{"description":"Populated if Done == true.","allOf":[{"$ref":"#/definitions/pkg_server_router.OperationResult"}]}}},"pkg_server_router.OperationResult":{"type":"object","properties":{"error":{"description":"Populated when there was an error with the operation.","type":"string"},"response":{"description":"Populated iff Error == \"\". The type should be specified in the calling APIs documentation."}}},"pkg_server_router.ResolveDIDResponse":{"type":"object","properties":{"didDocument":{"$ref":"#/definitions/did.Document"},"didDocumentMetadata":{"$ref":"#/definitions/resolution.DocumentMetadata"},"didResolutionMetadata":{"$ref":"#/definitions/resolution.ResolutionMetadata"}}},"pkg_server_router.ReviewApplicationRequest":{"type":"object","properties":{"approved":{"type":"boolean"},"credential_overrides":{"description":"Overrides to apply to the credentials that will be created. Keys are the ID that corresponds to an\nOutputDescriptor.ID from the manifest.","type":"object","additionalProperties":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_manifest_model.CredentialOverride"}},"reason":{"type":"string"}}},"pkg_server_router.ReviewSubmissionRequest":{"type":"object","required":["approved"],"properties":{"approved":{"type":"boolean"},"reason":{"type":"string"}}},"pkg_server_router.ReviewSubmissionResponse":{"type":"object","required":["status"],"properties":{"reason":{"description":"The reason why the submission was approved or denied.","type":"string"},"status":{"description":"One of {` + "`" + `pending` + "`" + `, ` + "`" + `approved` + "`" + `, ` + "`" + `denied` + "`" + `, ` + "`" + `cancelled` + "`" + `}.","type":"string"},"verifiablePresentation":{"description":"The verifiable presentation containing the presentation_submission along with the credentials presented.","allOf":[{"$ref":"#/definitions/credential.VerifiablePresentation"}]}}},"pkg_server_router.StoreKeyRequest":{"type":"object","required":["base58PrivateKey","controller","id","type"],"properties":{"base58PrivateKey":{"description":"Base58 encoding of the bytes that result from marshalling the private key using golang's implementation.","type":"string"},"controller":{"description":"See https://www.w3.org/TR/did-core/#did-controller","type":"string"},"id":{"description":"The ` + "`" + `id` + "`" + ` field is the unique identifier for this object. If set to a resolvable DID, the ssi-service will use\nthe private key encoded in the ` + "`" + `PrivateKeyBase58` + "`" + ` field of this object to sign objects issued or authored by this\nDID; otherwise, it will only be used to identify this object.","type":"string"},"type":{"description":"Identifies the cryptographic algorithm family used with the key.\nOne of the following: \"Ed25519\", \"X25519\", \"secp256k1\", \"P-224\", \"P-256\", \"P-384\", \"P-521\", \"RSA\".","allOf":[{"$ref":"#/definitions/crypto.KeyType"}]}}},"pkg_server_router.SubmitApplicationRequest":{"type":"object","required":["applicationJwt"],"properties":{"applicationJwt":{"description":"Contains the following properties:\nApplication  manifestsdk.CredentialApplication ` + "`" + `json:\"credential_application\" validate:\"required\"` + "`" + `\nCredentials  []interface{}                     ` + "`" + `json:\"vcs\" validate:\"required\"` + "`" + `","type":"string"}}},"pkg_server_router.SubmitApplicationResponse":{"type":"object","properties":{"credential_response":{"$ref":"#/definitions/manifest.CredentialResponse"},"responseJwt":{"type":"string"},"verifiableCredentials":{"description":"this is an any type to union Data Integrity and JWT style VCs","type":"array","items":{}}}},"pkg_server_router.UpdateCredentialStatusRequest":{"type":"object","properties":{"revoked":{"description":"The new revoked status of this credential. The status will be saved in the encodedList of the StatusList2021\ncredential associated with this VC.","type":"boolean"},"suspended":{"type":"boolean"}}},"pkg_server_router.UpdateCredentialStatusResponse":{"type":"object","properties":{"revoked":{"description":"The updated status of this credential.","type":"boolean"},"suspended":{"type":"boolean"}}},"pkg_server_router.VerifyCredentialRequest":{"type":"object","properties":{"credential":{"description":"A credential secured via data integrity. Must have the \"proof\" property set.","allOf":[{"$ref":"#/definitions/credential.VerifiableCredential"}]},"credentialJwt":{"description":"A JWT that encodes a credential.","type":"string"}}},"pkg_server_router.VerifyCredentialResponse":{"type":"object","properties":{"reason":{"description":"The reason why this credential couldn't be verified.","type":"string"},"verified":{"description":"Whether the credential was verified.","type":"boolean"}}},"pkg_server_router.VerifySchemaRequest":{"type":"object","required":["schemaJwt"],"properties":{"schemaJwt":{"type":"string"}}},"pkg_server_router.VerifySchemaResponse":{"type":"object","required":["verified"],"properties":{"reason":{"type":"string"},"verified":{"type":"boolean"}}},"rendering.ColorResource":{"type":"object","properties":{"color":{"description":"a HEX string color value (e.g. #00000)","type":"string"}}},"rendering.DataDisplay":{"type":"object","properties":{"description":{"$ref":"#/definitions/rendering.DisplayMappingObject"},"properties":{"type":"array","items":{"$ref":"#/definitions/rendering.LabeledDisplayMappingObject"}},"subtitle":{"$ref":"#/definitions/rendering.DisplayMappingObject"},"title":{"$ref":"#/definitions/rendering.DisplayMappingObject"}}},"rendering.DisplayMappingObject":{"type":"object","properties":{"fallback":{"type":"string"},"path":{"description":"Ifa path is present it must be an array of JSON Path string expressions\nand the schema property must also be present.","type":"array","items":{"type":"string"}},"schema":{"$ref":"#/definitions/rendering.DisplayMappingSchema"},"text":{"description":"If path is not present, the text value is required with no other properties","type":"string"}}},"rendering.DisplayMappingSchema":{"type":"object","required":["type"],"properties":{"format":{"description":"Must be present if the value of the type property is \"string\"","allOf":[{"$ref":"#/definitions/rendering.SchemaFormat"}]},"type":{"$ref":"#/definitions/rendering.SchemaType"}}},"rendering.EntityStyleDescriptor":{"type":"object","properties":{"background":{"$ref":"#/definitions/rendering.ColorResource"},"hero":{"$ref":"#/definitions/rendering.ImageResource"},"text":{"$ref":"#/definitions/rendering.ColorResource"},"thumbnail":{"$ref":"#/definitions/rendering.ImageResource"}}},"rendering.ImageResource":{"type":"object","required":["uri"],"properties":{"alt":{"description":"Describes the alternate text for a logo image","type":"string"},"uri":{"description":"Must be a valid URI string to an image resource","type":"string"}}},"rendering.LabeledDisplayMappingObject":{"type":"object","required":["label"],"properties":{"fallback":{"type":"string"},"label":{"type":"string"},"path":{"description":"Ifa path is present it must be an array of JSON Path string expressions\nand the schema property must also be present.","type":"array","items":{"type":"string"}},"schema":{"$ref":"#/definitions/rendering.DisplayMappingSchema"},"text":{"description":"If path is not present, the text value is required with no other properties","type":"string"}}},"rendering.SchemaFormat":{"type":"string","enum":["date-time","time","date","email","idn-email","hostname","idn-hostname","ipv4","ipv6","uri","uri-reference","iri","iri-reference"],"x-enum-varnames":["DateTimeFormat","TimeFormat","DateFormat","EmailFormat","IDNEmailFormat","HostnameFormat","IDNHostnameFormat","IPV4Format","IPV6Format","URIFormat","URIReferenceFormat","IRIFormat","IRIReferenceFormat"]},"rendering.SchemaType":{"type":"string","enum":["string","boolean","number","integer"],"x-enum-varnames":["StringType","BooleanType","NumberType","IntegerType"]},"resolution.DocumentMetadata":{"type":"object","properties":{"canonicalId":{"type":"string"},"created":{"type":"string"},"deactivated":{"type":"boolean"},"equivalentId":{"type":"string"},"nextUpdate":{"type":"string"},"nextVersionId":{"type":"string"},"updated":{"type":"string"},"versionId":{"type":"string"}}},"resolution.ResolutionError":{"type":"object","properties":{"code":{"type":"string"},"invalidDid":{"type":"boolean"},"notFound":{"type":"boolean"},"representationNotSupported":{"type":"boolean"}}},"resolution.ResolutionMetadata":{"type":"object","properties":{"contentType":{"type":"string"},"error":{"$ref":"#/definitions/resolution.ResolutionError"}}},"schema.JSONSchema":{"type":"object","additionalProperties":{}},"schema.VCJSONSchema":{"type":"object","properties":{"author":{"type":"string"},"authored":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"schema":{"$ref":"#/definitions/schema.JSONSchema"},"type":{"type":"string"},"version":{"type":"string"}}},"time.Duration":{"type":"integer","enum":[-9223372036854775808,9223372036854775807,1,1000,1000000,1000000000,60000000000,3600000000000],"x-enum-varnames":["minDuration","maxDuration","Nanosecond","Microsecond","Millisecond","Second","Minute","Hour"]}}}`
+    "schemes": {{ marshal .Schemes }},"swagger":"2.0","info":{"description":"{{escape .Description}}","title":"{{.Title}}","contact":{"name":"TBD","url":"https://github.com/TBD54566975/ssi-service/issues","email":"tbd-developer@squareup.com"},"license":{"name":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"},"version":"{{.Version}}"},"host":"{{.Host}}","basePath":"{{.BasePath}}","paths":{"/health":{"get":{"description":"Health is a simple handler that always responds with a 200 OK","consumes":["application/json"],"produces":["application/json"],"tags":["HealthCheck"],"summary":"Health Check","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetHealthCheckResponse"}}}}},"/readiness":{"get":{"description":"Readiness runs a number of application specific checks to see if all the relied upon services are\nhealthy.","consumes":["application/json"],"produces":["application/json"],"tags":["Readiness"],"summary":"Readiness","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetReadinessResponse"}}}}},"/v1/credentials":{"get":{"description":"Checks for the presence of a query parameter and calls the associated filtered get method. Only one parameter is allowed to be specified.","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Get Credentials","parameters":[{"type":"string","example":"did:key:z6MkiTBz1ymuepAQ4HEHYSF1H8quG5GLVVQR3djdX3mDooWp","description":"The issuer id","name":"issuer","in":"query"},{"type":"string","description":"The credentialSchema.id value to filter by","name":"schema","in":"query"},{"type":"string","description":"The credentialSubject.id value to filter by","name":"subject","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetCredentialsResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Create a verifiable credential","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Create Credential","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateCredentialRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreateCredentialResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/credentials/status/{id}":{"get":{"description":"Get credential status list by id.","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Get Credential Status List","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetCredentialStatusListResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/credentials/verification":{"put":{"description":"Verify a given credential by its id. The system does the following levels of verification:\n1. Makes sure the credential has a valid signature\n2. Makes sure the credential has is not expired\n3. Makes sure the credential complies with the VC Data Model\n4. If the credential has a schema, makes sure its data complies with the schema","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Verify Credential","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.VerifyCredentialRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.VerifyCredentialResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/credentials/{id}":{"get":{"description":"Get credential by id","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Get Credential","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetCredentialResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"delete":{"description":"Delete credential by ID","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Delete Credentials","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/credentials/{id}/status":{"get":{"description":"Get credential status by id","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Get Credential Status","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetCredentialStatusResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Update a credential's status","consumes":["application/json"],"produces":["application/json"],"tags":["CredentialAPI"],"summary":"Update Credential Status","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.UpdateCredentialStatusRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.UpdateCredentialStatusResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/dids":{"get":{"description":"Get supported DID method","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Get DID Methods","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetDIDMethodsResponse"}}}}},"/v1/dids/resolver/{id}":{"get":{"description":"Resolve a DID that may not be stored in this service","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Resolve a DID","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.ResolveDIDResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}}},"/v1/dids/{method}":{"get":{"description":"Get DIDs by method. Checks for an optional \"deleted=true\" query parameter, which exclusively returns DIDs that have been \"Soft Deleted\".","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Get DIDs","parameters":[{"type":"boolean","description":"When true, returns soft-deleted DIDs. Otherwise, returns DIDs that have not been soft-deleted. Default is false.","name":"deleted","in":"query"},{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.GetDIDsRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetDIDsByMethodResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Creates a fully custodial DID document with the given method. The document created is stored internally\nand can be retrieved using the GetOperation. Method dependent registration (for example, DID web\nregistration) is left up to the clients of this API. The private key(s) created by the method are stored\ninternally never leave the service boundary.","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Create DID Document","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateDIDByMethodRequest"}},{"type":"string","description":"Method","name":"method","in":"path","required":true}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreateDIDByMethodResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/dids/{method}/{id}":{"get":{"description":"Get DID by method","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Get DID","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateDIDByMethodRequest"}},{"type":"string","description":"Method","name":"method","in":"path","required":true},{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetDIDByMethodResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"When this is called with the correct did method and id it will flip the softDelete flag to true for the db entry.\nA user can still get the did if they know the DID ID, and the did keys will still exist, but this did will not show up in the GetDIDsByMethod call\nThis facilitates a clean SSI-Service Admin UI but not leave any hanging VCs with inaccessible hanging DIDs.\nSoft Deletes DID by method","consumes":["application/json"],"produces":["application/json"],"tags":["DecentralizedIdentityAPI"],"summary":"Soft Delete DID","parameters":[{"type":"string","description":"Method","name":"method","in":"path","required":true},{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/issuancetemplates":{"put":{"description":"Create issuance template","consumes":["application/json"],"produces":["application/json"],"tags":["IssuanceAPI"],"summary":"Create issuance template","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateIssuanceTemplateRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.Template"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/issuancetemplates/{id}":{"get":{"description":"Get an issuance template by its id","consumes":["application/json"],"produces":["application/json"],"tags":["IssuanceAPI"],"summary":"Get issuance template","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.Template"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Delete issuance template by ID","consumes":["application/json"],"produces":["application/json"],"tags":["IssuanceAPI"],"summary":"Delete issuance template","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/keys":{"put":{"description":"Stores a key to be used by the service","consumes":["application/json"],"produces":["application/json"],"tags":["KeyStoreAPI"],"summary":"Store Key","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.StoreKeyRequest"}}],"responses":{"201":{"description":"Created"},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/keys/{id}":{"get":{"description":"Get details about a stored key","consumes":["application/json"],"produces":["application/json"],"tags":["KeyStoreAPI"],"summary":"Get Details For Key","parameters":[{"type":"string","description":"ID of the key to get","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetKeyDetailsResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Marks the stored key as being revoked, along with the timestamps of when it was revoked. NB: the key can still be used for signing. This will likely be addressed before v1 is released.","consumes":["application/json"],"produces":["application/json"],"tags":["KeyStoreAPI"],"summary":"Revoke Key","parameters":[{"type":"string","description":"ID of the key to revoke","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests":{"get":{"description":"Checks for the presence of a query parameter and calls the associated filtered get method","consumes":["application/json"],"produces":["application/json"],"tags":["ManifestAPI"],"summary":"Get manifests","parameters":[{"type":"string","description":"string issuer","name":"issuer","in":"query"},{"type":"string","description":"string schema","name":"schema","in":"query"},{"type":"string","description":"string subject","name":"subject","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetManifestsResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Create manifest","consumes":["application/json"],"produces":["application/json"],"tags":["ManifestAPI"],"summary":"Create manifest","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateManifestRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreateManifestResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/applications":{"get":{"description":"Gets all the existing applications.","consumes":["application/json"],"produces":["application/json"],"tags":["ApplicationAPI"],"summary":"Get applications","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetApplicationsResponse"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Submit a credential application in response to a credential manifest. The request body is expected to","consumes":["application/json"],"produces":["application/json"],"tags":["ApplicationAPI"],"summary":"Submit application","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.SubmitApplicationRequest"}}],"responses":{"201":{"description":"Operation with a SubmitApplicationResponse type in the ` + "`" + `result.response` + "`" + ` field.","schema":{"$ref":"#/definitions/pkg_server_router.Operation"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/applications/{id}":{"get":{"description":"Get application by id","consumes":["application/json"],"produces":["application/json"],"tags":["ApplicationAPI"],"summary":"Get application","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetApplicationResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Delete application by ID","consumes":["application/json"],"produces":["application/json"],"tags":["ApplicationAPI"],"summary":"Delete applications","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/applications/{id}/review":{"put":{"description":"Reviewing an application either fulfills or denies the credential.","consumes":["application/json"],"produces":["application/json"],"tags":["ApplicationAPI"],"summary":"Reviews an application","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.ReviewApplicationRequest"}}],"responses":{"201":{"description":"Credential Response","schema":{"$ref":"#/definitions/pkg_server_router.SubmitApplicationResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/responses":{"get":{"description":"Checks for the presence of a query parameter and calls the associated filtered get method","consumes":["application/json"],"produces":["application/json"],"tags":["ResponseAPI"],"summary":"Get responses","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetResponsesResponse"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/responses/{id}":{"get":{"description":"Get response by id","consumes":["application/json"],"produces":["application/json"],"tags":["ResponseAPI"],"summary":"Get response","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetResponseResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"delete":{"description":"Delete response by ID","consumes":["application/json"],"produces":["application/json"],"tags":["ResponseAPI"],"summary":"Delete responses","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/manifests/{id}":{"get":{"description":"Get a credential manifest by its id","consumes":["application/json"],"produces":["application/json"],"tags":["ManifestAPI"],"summary":"Get manifest","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetManifestResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Delete manifest by ID","consumes":["application/json"],"produces":["application/json"],"tags":["ManifestAPI"],"summary":"Delete manifests","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/operations":{"get":{"description":"List operations according to the request","consumes":["application/json"],"produces":["application/json"],"tags":["OperationAPI"],"summary":"List operations","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.GetOperationsRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetOperationsResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/operations/cancel/{id}":{"get":{"description":"Cancels an ongoing operation, if possible.","consumes":["application/json"],"produces":["application/json"],"tags":["OperationAPI"],"summary":"Cancel an ongoing operation","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.Operation"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/operations/{id}":{"get":{"description":"Get operation by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["OperationAPI"],"summary":"Get an operation","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.Operation"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/presentation/definition":{"put":{"description":"Create presentation definition","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationDefinitionAPI"],"summary":"Create PresentationDefinition","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreatePresentationDefinitionRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreatePresentationDefinitionResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/presentation/definition/{id}":{"get":{"description":"Get a presentation definition by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationDefinitionAPI"],"summary":"Get PresentationDefinition","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetPresentationDefinitionResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Delete a presentation definition by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationDefinitionAPI"],"summary":"Delete PresentationDefinition","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/presentations/definitions":{"get":{"description":"Lists all the existing presentation definitions","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationDefinitionAPI"],"summary":"List Presentation Definitions","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.ListDefinitionsRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.ListDefinitionsResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/presentations/submissions":{"get":{"description":"List existing submissions according to a filtering query. The ` + "`" + `filter` + "`" + ` field follows the syntax described in https://google.aip.dev/160.","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationSubmissionAPI"],"summary":"List Submissions","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.ListSubmissionRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.ListSubmissionResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Creates a submission in this server ready to be reviewed.","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationSubmissionAPI"],"summary":"Create Submission","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateSubmissionRequest"}}],"responses":{"201":{"description":"The type of response is Submission once the operation has finished.","schema":{"$ref":"#/definitions/pkg_server_router.Operation"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/presentations/submissions/{id}":{"get":{"description":"Get a submission by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationSubmissionAPI"],"summary":"Get Submission","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetSubmissionResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}}},"/v1/presentations/submissions/{id}/review":{"put":{"description":"Reviews a pending submission. After this method is called, the operation with ` + "`" + `id==presentations/submissions/{submission_id}` + "`" + ` will be updated with the result of this invocation.","consumes":["application/json"],"produces":["application/json"],"tags":["PresentationSubmissionAPI"],"summary":"Review a pending submission","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.ReviewSubmissionRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.ReviewSubmissionResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/schemas":{"get":{"description":"Get schemas","consumes":["application/json"],"produces":["application/json"],"tags":["SchemaAPI"],"summary":"Get Schemas","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetSchemasResponse"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Create schema","consumes":["application/json"],"produces":["application/json"],"tags":["SchemaAPI"],"summary":"Create SchemaID","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateSchemaRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreateSchemaResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/schemas/verification":{"put":{"description":"Verify a given schema by its id","consumes":["application/json"],"produces":["application/json"],"tags":["SchemaAPI"],"summary":"Verify SchemaID","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.VerifySchemaRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.VerifySchemaResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}}},"/v1/schemas/{id}":{"get":{"description":"Get a schema by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["SchemaAPI"],"summary":"Get SchemaID","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetSchemaResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}},"delete":{"description":"Delete a schema by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["SchemaAPI"],"summary":"Delete SchemaID","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/webhooks":{"get":{"description":"Get webhooks","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Get Webhooks","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetWebhooksResponse"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}},"put":{"description":"Create webhook","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Create Webhook","parameters":[{"description":"request body","name":"request","in":"body","required":true,"schema":{"$ref":"#/definitions/pkg_server_router.CreateWebhookRequest"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/pkg_server_router.CreateWebhookResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}},"/v1/webhooks/nouns":{"get":{"description":"Get supported nouns for webhook generation","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Get Supported Nouns","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.GetSupportedNounsResponse"}}}}},"/v1/webhooks/verbs":{"get":{"description":"Get supported verbs for webhook generation","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Get Supported Verbs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.GetSupportedVerbsResponse"}}}}},"/v1/webhooks/{noun}/{verb}":{"get":{"description":"Get a webhook by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Get Webhook","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/pkg_server_router.GetWebhookResponse"}},"400":{"description":"Bad request","schema":{"type":"string"}}}}},"/v1/webhooks/{noun}/{verb}/{url}":{"delete":{"description":"Delete a webhook by its ID","consumes":["application/json"],"produces":["application/json"],"tags":["WebhookAPI"],"summary":"Delete Webhook","parameters":[{"type":"string","description":"ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content","schema":{"type":"string"}},"400":{"description":"Bad request","schema":{"type":"string"}},"500":{"description":"Internal server error","schema":{"type":"string"}}}}}},"definitions":{"credential.CredentialSchema":{"type":"object","required":["id","type"],"properties":{"id":{"type":"string"},"type":{"type":"string"}}},"credential.CredentialSubject":{"type":"object","additionalProperties":{}},"credential.Prohibition":{"type":"object","properties":{"action":{"type":"array","items":{"type":"string"}},"assignee":{"type":"string"},"assigner":{"type":"string"},"target":{"type":"string"}}},"credential.RefreshService":{"type":"object","required":["id","type"],"properties":{"id":{"type":"string"},"type":{"type":"string"}}},"credential.TermsOfUse":{"type":"object","properties":{"id":{"type":"string"},"profile":{"type":"string"},"prohibition":{"type":"array","items":{"$ref":"#/definitions/credential.Prohibition"}},"type":{"type":"string"}}},"credential.VerifiableCredential":{"type":"object","required":["@context","credentialSubject","issuanceDate","issuer","type"],"properties":{"@context":{"description":"Either a string or set of strings"},"credentialSchema":{"$ref":"#/definitions/credential.CredentialSchema"},"credentialStatus":{},"credentialSubject":{"description":"This is where the subject's ID *may* be present","allOf":[{"$ref":"#/definitions/credential.CredentialSubject"}]},"evidence":{"type":"array","items":{}},"expirationDate":{"type":"string"},"id":{"type":"string"},"issuanceDate":{"description":"https://www.w3.org/TR/xmlschema11-2/#dateTimes","type":"string"},"issuer":{"description":"either a URI or an object containing an ` + "`" + `id` + "`" + ` property."},"proof":{"description":"For embedded proof support\nProof is a digital signature over a credential https://www.w3.org/TR/2021/REC-vc-data-model-20211109/#proofs-signatures"},"refreshService":{"$ref":"#/definitions/credential.RefreshService"},"termsOfUse":{"type":"array","items":{"$ref":"#/definitions/credential.TermsOfUse"}},"type":{"description":"Either a string or a set of strings https://www.w3.org/TR/2021/REC-vc-data-model-20211109/#types"}}},"credential.VerifiablePresentation":{"type":"object","required":["type"],"properties":{"@context":{"description":"Either a string or set of strings"},"holder":{"type":"string"},"id":{"type":"string"},"presentation_submission":{"description":"an optional field as a part of https://identity.foundation/presentation-exchange/#embed-targets"},"proof":{},"type":{},"verifiableCredential":{"description":"Verifiable credential could be our object model, a JWT, or any other valid credential representation","type":"array","items":{}}}},"crypto.KeyType":{"type":"string","enum":["Ed25519","X25519","secp256k1","secp256k1-ECDSA","P-224","P-256","P-384","P-521","RSA","Dilithium2","Dilithium3","Dilithium5"],"x-enum-varnames":["Ed25519","X25519","SECP256k1","SECP256k1ECDSA","P224","P256","P384","P521","RSA","Dilithium2","Dilithium3","Dilithium5"]},"crypto.SignatureAlgorithm":{"type":"string","enum":["EdDSA","ES256K","ES256","ES384","PS256","Dilithium2","Dilithium3","Dilithium5"],"x-enum-varnames":["EdDSA","ES256K","ES256","ES384","PS256","Dilithium2Sig","Dilithium3Sig","Dilithium5Sig"]},"did.Document":{"type":"object","properties":{"@context":{},"alsoKnownAs":{"type":"string"},"assertionMethod":{"type":"array","items":{}},"authentication":{"type":"array","items":{}},"capabilityDelegation":{"type":"array","items":{}},"capabilityInvocation":{"type":"array","items":{}},"controller":{"type":"string"},"id":{"description":"As per https://www.w3.org/TR/did-core/#did-subject intermediate representations of DID Documents do not\nrequire an ID property. The provided test vectors demonstrate IRs. As such, the property is optional.","type":"string"},"keyAgreement":{"type":"array","items":{}},"service":{"type":"array","items":{"$ref":"#/definitions/github_com_TBD54566975_ssi-sdk_did.Service"}},"verificationMethod":{"type":"array","items":{"$ref":"#/definitions/did.VerificationMethod"}}}},"did.Method":{"type":"string","enum":["key","peer","pkh","web","ion","jwk"],"x-enum-varnames":["KeyMethod","PeerMethod","PKHMethod","WebMethod","IONMethod","JWKMethod"]},"did.VerificationMethod":{"type":"object","required":["controller","id","type"],"properties":{"blockchainAccountId":{"description":"for PKH DIDs - https://github.com/w3c-ccg/did-pkh/blob/90b28ad3c18d63822a8aab3c752302aa64fc9382/did-pkh-method-draft.md","type":"string"},"controller":{"type":"string"},"id":{"type":"string"},"publicKeyBase58":{"type":"string"},"publicKeyJwk":{"description":"must conform to https://datatracker.ietf.org/doc/html/rfc7517","allOf":[{"$ref":"#/definitions/jwx.PublicKeyJWK"}]},"publicKeyMultibase":{"description":"https://datatracker.ietf.org/doc/html/draft-multiformats-multibase-03","type":"string"},"type":{"type":"string"}}},"exchange.ClaimFormat":{"type":"object","properties":{"jwt":{"$ref":"#/definitions/exchange.JWTType"},"jwt_vc":{"$ref":"#/definitions/exchange.JWTType"},"jwt_vp":{"$ref":"#/definitions/exchange.JWTType"},"ldp":{"$ref":"#/definitions/exchange.LDPType"},"ldp_vc":{"$ref":"#/definitions/exchange.LDPType"},"ldp_vp":{"$ref":"#/definitions/exchange.LDPType"}}},"exchange.Constraints":{"type":"object","properties":{"fields":{"type":"array","items":{"$ref":"#/definitions/exchange.Field"}},"is_holder":{"type":"array","items":{"$ref":"#/definitions/exchange.RelationalConstraint"}},"limit_disclosure":{"$ref":"#/definitions/exchange.Preference"},"same_subject":{"type":"array","items":{"$ref":"#/definitions/exchange.RelationalConstraint"}},"statuses":{"description":"https://identity.foundation/presentation-exchange/#credential-status-constraint-feature","allOf":[{"$ref":"#/definitions/exchange.CredentialStatus"}]},"subject_is_issuer":{"description":"https://identity.foundation/presentation-exchange/#relational-constraint-feature","allOf":[{"$ref":"#/definitions/exchange.Preference"}]}}},"exchange.CredentialStatus":{"type":"object","properties":{"active":{"type":"object","properties":{"directive":{"$ref":"#/definitions/exchange.Preference"}}},"revoked":{"type":"object","properties":{"directive":{"$ref":"#/definitions/exchange.Preference"}}},"suspended":{"type":"object","properties":{"directive":{"$ref":"#/definitions/exchange.Preference"}}}}},"exchange.Field":{"type":"object","required":["path"],"properties":{"filter":{"$ref":"#/definitions/exchange.Filter"},"id":{"type":"string"},"intent_to_retain":{"description":"https://identity.foundation/presentation-exchange/spec/v2.0.0/#retention-feature","type":"boolean"},"name":{"type":"string"},"optional":{"type":"boolean"},"path":{"type":"array","items":{"type":"string"}},"predicate":{"description":"If a predicate property is present, filter must be too\nhttps://identity.foundation/presentation-exchange/#predicate-feature","allOf":[{"$ref":"#/definitions/exchange.Preference"}]},"purpose":{"type":"string"}}},"exchange.Filter":{"type":"object","properties":{"additionalProperties":{"type":"boolean"},"allOf":{},"const":{},"enum":{"type":"array","items":{}},"exclusiveMaximum":{},"exclusiveMinimum":{},"format":{"type":"string"},"maxLength":{"type":"integer"},"maximum":{},"minLength":{"type":"integer"},"minimum":{},"not":{},"oneOf":{},"pattern":{"type":"string"},"properties":{},"required":{"type":"array","items":{"type":"string"}},"type":{"type":"string"}}},"exchange.InputDescriptor":{"type":"object","required":["constraints","id"],"properties":{"constraints":{"$ref":"#/definitions/exchange.Constraints"},"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"group":{"description":"Must match a grouping strings listed in the ` + "`" + `from` + "`" + ` values of a submission requirement rule","type":"array","items":{"type":"string"}},"id":{"description":"Must be unique within the Presentation Definition","type":"string"},"name":{"type":"string"},"purpose":{"description":"Purpose for which claim's data is being requested","type":"string"}}},"exchange.JWTType":{"type":"object","required":["alg"],"properties":{"alg":{"type":"array","items":{"$ref":"#/definitions/crypto.SignatureAlgorithm"}}}},"exchange.LDPType":{"type":"object","required":["proof_type"],"properties":{"proof_type":{"type":"array","items":{"type":"string"}}}},"exchange.Preference":{"type":"string","enum":["required","preferred","allowed","disallowed"],"x-enum-varnames":["Required","Preferred","Allowed","Disallowed"]},"exchange.PresentationDefinition":{"type":"object","required":["id","input_descriptors"],"properties":{"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"frame":{"description":"https://identity.foundation/presentation-exchange/#json-ld-framing-feature"},"id":{"type":"string"},"input_descriptors":{"type":"array","items":{"$ref":"#/definitions/exchange.InputDescriptor"}},"name":{"type":"string"},"purpose":{"type":"string"},"submission_requirements":{"type":"array","items":{"$ref":"#/definitions/exchange.SubmissionRequirement"}}}},"exchange.PresentationSubmission":{"type":"object","required":["definition_id","descriptor_map","id"],"properties":{"definition_id":{"type":"string"},"descriptor_map":{"type":"array","items":{"$ref":"#/definitions/exchange.SubmissionDescriptor"}},"id":{"type":"string"}}},"exchange.RelationalConstraint":{"type":"object","required":["directive","field_id"],"properties":{"directive":{"$ref":"#/definitions/exchange.Preference"},"field_id":{"type":"array","items":{"type":"string"}}}},"exchange.Selection":{"type":"string","enum":["all","pick"],"x-enum-varnames":["All","Pick"]},"exchange.SubmissionDescriptor":{"type":"object","required":["format","id","path"],"properties":{"format":{"type":"string"},"id":{"description":"Must match the ` + "`" + `id` + "`" + ` property of the corresponding input descriptor","type":"string"},"path":{"type":"string"},"path_nested":{"$ref":"#/definitions/exchange.SubmissionDescriptor"}}},"exchange.SubmissionRequirement":{"type":"object","required":["rule"],"properties":{"count":{"type":"integer","minimum":1},"from":{"type":"string"},"from_nested":{"type":"array","items":{"$ref":"#/definitions/exchange.SubmissionRequirement"}},"max":{"type":"integer"},"min":{"type":"integer"},"name":{"type":"string"},"purpose":{"type":"string"},"rule":{"$ref":"#/definitions/exchange.Selection"}}},"github_com_TBD54566975_ssi-sdk_did.Service":{"type":"object","required":["id","serviceEndpoint","type"],"properties":{"accept":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"routingKeys":{"type":"array","items":{"type":"string"}},"serviceEndpoint":{"description":"A string, map, or set composed of one or more strings and/or maps\nAll string values must be valid URIs"},"type":{"type":"string"}}},"github_com_tbd54566975_ssi-service_internal_credential.Container":{"type":"object","properties":{"credential":{"$ref":"#/definitions/credential.VerifiableCredential"},"credentialJWT":{"type":"string"},"id":{"description":"Credential ID","type":"string"},"issuerKID":{"type":"string"},"revoked":{"type":"boolean"},"suspended":{"type":"boolean"}}},"github_com_tbd54566975_ssi-service_pkg_service_framework.Status":{"type":"object","properties":{"message":{"description":"When ` + "`" + `status` + "`" + ` is ` + "`" + `not_ready` + "`" + `, then message contains explanation of why it's not ready.","type":"string"},"status":{"description":"Either ` + "`" + `ready` + "`" + ` or ` + "`" + `not_ready` + "`" + `.","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_framework.StatusState"}]}}},"github_com_tbd54566975_ssi-service_pkg_service_framework.StatusState":{"type":"string","enum":["ready","not_ready"],"x-enum-varnames":["StatusReady","StatusNotReady"]},"github_com_tbd54566975_ssi-service_pkg_service_issuance.ClaimTemplates":{"type":"object","additionalProperties":{}},"github_com_tbd54566975_ssi-service_pkg_service_issuance.CredentialTemplate":{"type":"object","properties":{"credentialInputDescriptor":{"description":"Optional.\nWhen present, it's the ID of the input descriptor in the application. Corresponds to one of the\nPresentationDefinition.InputDescriptors[].ID in the credential manifest. When creating a credential, the base\ndata will be populated from the provided submission that matches this ID.\nWhen absent, there will be no base data for the credentials created. Additionally, no JSON path strings in\nClaimTemplates.Data will be resolved.","type":"string"},"data":{"description":"Data that will be used to determine credential claims.\nValues may be json path like strings, or any other JSON primitive. Each entry will be used to come up with a\nclaim about the credentialSubject in the credential that will be issued.","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.ClaimTemplates"}]},"expiry":{"description":"Parameter to determine the expiry of the credential.","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.TimeLike"}]},"id":{"description":"ID corresponding to an OutputDescriptor.ID from the manifest.","type":"string"},"revocable":{"description":"Whether the credentials created should be revocable.","type":"boolean"},"schema":{"description":"ID of the CredentialSchema to be used for the issued credential.","type":"string"}}},"github_com_tbd54566975_ssi-service_pkg_service_issuance.Template":{"type":"object","required":["credentialManifest","issuer","issuerKid"],"properties":{"credentialManifest":{"description":"ID of the credential manifest that this template corresponds to.","type":"string"},"credentials":{"description":"Info required to create a credential from a credential application.","type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.CredentialTemplate"}},"id":{"description":"ID of this template.","type":"string"},"issuer":{"description":"ID of the issuer that will be issuance the credentials.","type":"string"},"issuerKid":{"description":"ID of the key that will be used to sign the credentials.","type":"string"}}},"github_com_tbd54566975_ssi-service_pkg_service_issuance.TimeLike":{"type":"object","properties":{"duration":{"description":"For a fixed offset from when it was issued.","allOf":[{"$ref":"#/definitions/time.Duration"}]},"time":{"description":"For fixed time in the future.","type":"string"}}},"github_com_tbd54566975_ssi-service_pkg_service_manifest_model.CredentialOverride":{"type":"object","properties":{"data":{"description":"Data that will be used to determine credential claims.","type":"object","additionalProperties":{}},"expiry":{"description":"Parameter to determine the expiry of the credential.","type":"string"},"revocable":{"description":"Whether the credentials created should be revocable.","type":"boolean"}}},"github_com_tbd54566975_ssi-service_pkg_service_presentation_model.Submission":{"type":"object","required":["status"],"properties":{"reason":{"description":"The reason why the submission was approved or denied.","type":"string"},"status":{"description":"One of {` + "`" + `pending` + "`" + `, ` + "`" + `approved` + "`" + `, ` + "`" + `denied` + "`" + `, ` + "`" + `cancelled` + "`" + `}.","type":"string"},"verifiablePresentation":{"description":"The verifiable presentation containing the presentation_submission along with the credentials presented.","allOf":[{"$ref":"#/definitions/credential.VerifiablePresentation"}]}}},"github_com_tbd54566975_ssi-service_pkg_service_webhook.GetSupportedNounsResponse":{"type":"object","properties":{"nouns":{"type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Noun"}}}},"github_com_tbd54566975_ssi-service_pkg_service_webhook.GetSupportedVerbsResponse":{"type":"object","properties":{"verbs":{"type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Verb"}}}},"github_com_tbd54566975_ssi-service_pkg_service_webhook.Noun":{"type":"string","enum":["Credential","DID","Manifest","SchemaID","Presentation","Application","Submission"],"x-enum-varnames":["Credential","DID","Manifest","Schema","Presentation","Application","Submission"]},"github_com_tbd54566975_ssi-service_pkg_service_webhook.Verb":{"type":"string","enum":["Create","Delete"],"x-enum-varnames":["Create","Delete"]},"github_com_tbd54566975_ssi-service_pkg_service_webhook.Webhook":{"type":"object","required":["noun","urls","verb"],"properties":{"noun":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Noun"},"urls":{"type":"array","items":{"type":"string"}},"verb":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Verb"}}},"jwx.PublicKeyJWK":{"type":"object","required":["kty"],"properties":{"alg":{"type":"string"},"crv":{"type":"string"},"e":{"type":"string"},"key_ops":{"type":"string"},"kid":{"type":"string"},"kty":{"type":"string"},"n":{"type":"string"},"use":{"type":"string"},"x":{"type":"string"},"y":{"type":"string"}}},"manifest.CredentialApplication":{"type":"object","required":["format","id","manifest_id","spec_version"],"properties":{"applicant":{"type":"string"},"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"id":{"type":"string"},"manifest_id":{"type":"string"},"presentation_submission":{"description":"Must be present if the corresponding manifest contains a presentation_definition","allOf":[{"$ref":"#/definitions/exchange.PresentationSubmission"}]},"spec_version":{"type":"string"}}},"manifest.CredentialManifest":{"type":"object","required":["id","issuer","output_descriptors","spec_version"],"properties":{"description":{"type":"string"},"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"id":{"type":"string"},"issuer":{"$ref":"#/definitions/manifest.Issuer"},"name":{"type":"string"},"output_descriptors":{"type":"array","items":{"$ref":"#/definitions/manifest.OutputDescriptor"}},"presentation_definition":{"$ref":"#/definitions/exchange.PresentationDefinition"},"spec_version":{"type":"string"}}},"manifest.CredentialResponse":{"type":"object","required":["id","manifest_id","spec_version"],"properties":{"applicant":{"type":"string"},"application_id":{"type":"string"},"denial":{"type":"object","required":["reason"],"properties":{"input_descriptors":{"type":"array","items":{"type":"string"}},"reason":{"type":"string"}}},"fulfillment":{"type":"object","required":["descriptor_map"],"properties":{"descriptor_map":{"type":"array","items":{"$ref":"#/definitions/exchange.SubmissionDescriptor"}}}},"id":{"type":"string"},"manifest_id":{"type":"string"},"spec_version":{"type":"string"}}},"manifest.Issuer":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"styles":{"description":"an object or URI as defined by the DIF Entity Styles specification\nhttps://identity.foundation/wallet-rendering/#entity-styles","allOf":[{"$ref":"#/definitions/rendering.EntityStyleDescriptor"}]}}},"manifest.OutputDescriptor":{"type":"object","required":["id","schema"],"properties":{"description":{"type":"string"},"display":{"description":"both below: an object or URI as defined by the DIF Entity Styles specification","allOf":[{"$ref":"#/definitions/rendering.DataDisplay"}]},"id":{"description":"Must be unique within a manifest","type":"string"},"name":{"type":"string"},"schema":{"type":"string"},"styles":{"$ref":"#/definitions/rendering.EntityStyleDescriptor"}}},"pkg_server_router.CreateCredentialRequest":{"type":"object","required":["data","issuer","issuerKid","subject"],"properties":{"@context":{"description":"A context is optional. If not present, we'll apply default, required context values.","type":"string"},"data":{"description":"Claims about the subject. The keys should be predicates (e.g. \"alumniOf\"), and the values can be any object.","type":"object","additionalProperties":{"type":"string"},"example":{"alumniOf":"did_for_uni"}},"expiry":{"description":"Optional. Corresponds to ` + "`" + `expirationDate` + "`" + ` in https://www.w3.org/TR/vc-data-model/#expiration.","type":"string","example":"2020-01-01T19:23:24Z"},"issuer":{"description":"The issuer id.","type":"string","example":"did:key:z6MkiTBz1ymuepAQ4HEHYSF1H8quG5GLVVQR3djdX3mDooWp"},"issuerKid":{"description":"The KID used to sign the credential","type":"string","example":"#z6MkiTBz1ymuepAQ4HEHYSF1H8quG5GLVVQR3djdX3mDooWp"},"revocable":{"description":"Whether this credential can be revoked. When true, the created VC will have the \"credentialStatus\"\nproperty set.","type":"boolean"},"schemaId":{"description":"A schema ID is optional. If present, we'll attempt to look it up and validate the data against it.","type":"string"},"subject":{"description":"The subject id.","type":"string","example":"did:key:z6MkiTBz1ymuepAQ4HEHYSF1H8quG5GLVVQR3djdX3mDooWp"},"suspendable":{"description":"Whether this credential can be suspended. When true, the created VC will have the \"credentialStatus\"\nproperty set.","type":"boolean"}}},"pkg_server_router.CreateCredentialResponse":{"type":"object","properties":{"credential":{"description":"A verifiable credential conformant to the media type ` + "`" + `application/vc+ld+json` + "`" + `.","allOf":[{"$ref":"#/definitions/credential.VerifiableCredential"}]},"credentialJwt":{"description":"The same verifiable credential, but using the syntax defined for the media type ` + "`" + `application/vc+jwt` + "`" + `. See\nhttps://w3c.github.io/vc-jwt/ for more details.","type":"string"}}},"pkg_server_router.CreateDIDByMethodRequest":{"type":"object","required":["keyType"],"properties":{"keyType":{"description":"Identifies the cryptographic algorithm family to use when generating this key.\nOne of the following: \"Ed25519\", \"X25519\", \"secp256k1\", \"P-224\",\"P-256\",\"P-384\", \"P-521\", \"RSA\"","allOf":[{"$ref":"#/definitions/crypto.KeyType"}]},"options":{"description":"Options for creating the DID. Implementation dependent on the method."}}},"pkg_server_router.CreateDIDByMethodResponse":{"type":"object","properties":{"did":{"$ref":"#/definitions/did.Document"}}},"pkg_server_router.CreateIssuanceTemplateRequest":{"type":"object","required":["credentialManifest","issuer","issuerKid"],"properties":{"credentialManifest":{"description":"ID of the credential manifest that this template corresponds to.","type":"string"},"credentials":{"description":"Info required to create a credential from a credential application.","type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.CredentialTemplate"}},"id":{"description":"ID of this template.","type":"string"},"issuer":{"description":"ID of the issuer that will be issuance the credentials.","type":"string"},"issuerKid":{"description":"ID of the key that will be used to sign the credentials.","type":"string"}}},"pkg_server_router.CreateManifestRequest":{"type":"object","required":["format","issuerDid","issuerKid","outputDescriptors"],"properties":{"description":{"type":"string"},"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"issuerDid":{"type":"string"},"issuerKid":{"type":"string"},"issuerName":{"type":"string"},"name":{"type":"string"},"outputDescriptors":{"type":"array","items":{"$ref":"#/definitions/manifest.OutputDescriptor"}},"presentationDefinition":{"$ref":"#/definitions/exchange.PresentationDefinition"}}},"pkg_server_router.CreateManifestResponse":{"type":"object","properties":{"credential_manifest":{"$ref":"#/definitions/manifest.CredentialManifest"},"manifestJwt":{"type":"string"}}},"pkg_server_router.CreatePresentationDefinitionRequest":{"type":"object","required":["author","authorKid","inputDescriptors"],"properties":{"author":{"description":"DID of the author of this presentation definition. The DID must have been previously created with the DID API,\nor the PrivateKey must have been added independently.","type":"string"},"authorKid":{"description":"The privateKey associated with the KID will be used to sign an envelope that contains\nthe created presentation definition.","type":"string"},"format":{"$ref":"#/definitions/exchange.ClaimFormat"},"inputDescriptors":{"type":"array","items":{"$ref":"#/definitions/exchange.InputDescriptor"}},"name":{"type":"string"},"purpose":{"type":"string"},"submissionRequirements":{"type":"array","items":{"$ref":"#/definitions/exchange.SubmissionRequirement"}}}},"pkg_server_router.CreatePresentationDefinitionResponse":{"type":"object","properties":{"presentationDefinitionJwt":{"description":"Signed envelope that contains the PresentationDefinition created using the privateKey of the author of the\ndefinition.","type":"string"},"presentation_definition":{"$ref":"#/definitions/exchange.PresentationDefinition"}}},"pkg_server_router.CreateSchemaRequest":{"type":"object","required":["author","name","schema"],"properties":{"author":{"type":"string"},"authorKid":{"description":"AuthorKID represents the KID of the author's private key to sign the schema. Required if sign is true.","type":"string"},"name":{"type":"string"},"schema":{"$ref":"#/definitions/schema.JSONSchema"},"sign":{"description":"Sign represents whether the schema should be signed by the author. Default is false.\nIf sign is true, the schema will be signed by the author's private key with the specified KID","type":"boolean"}}},"pkg_server_router.CreateSchemaResponse":{"type":"object","properties":{"id":{"type":"string"},"schema":{"$ref":"#/definitions/schema.VCJSONSchema"},"schemaJwt":{"type":"string"}}},"pkg_server_router.CreateSubmissionRequest":{"type":"object","required":["submissionJwt"],"properties":{"submissionJwt":{"type":"string"}}},"pkg_server_router.CreateWebhookRequest":{"type":"object","required":["noun","url","verb"],"properties":{"noun":{"description":"The noun (entity) for the new webhook.eg: Credential","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Noun"}]},"url":{"description":"The URL to post the output of this request to Noun.Verb action to.","type":"string"},"verb":{"description":"The verb for the new webhook.eg: Create","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Verb"}]}}},"pkg_server_router.CreateWebhookResponse":{"type":"object","properties":{"webhook":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Webhook"}}},"pkg_server_router.GetApplicationResponse":{"type":"object","properties":{"application":{"$ref":"#/definitions/manifest.CredentialApplication"},"id":{"type":"string"}}},"pkg_server_router.GetApplicationsResponse":{"type":"object","properties":{"applications":{"type":"array","items":{"$ref":"#/definitions/manifest.CredentialApplication"}}}},"pkg_server_router.GetCredentialResponse":{"type":"object","properties":{"credential":{"$ref":"#/definitions/credential.VerifiableCredential"},"credentialJwt":{"type":"string"},"id":{"type":"string"}}},"pkg_server_router.GetCredentialStatusListResponse":{"type":"object","properties":{"credential":{"description":"Credential where type includes \"VerifiableCredential\" and \"StatusList2021\".","allOf":[{"$ref":"#/definitions/credential.VerifiableCredential"}]},"credentialJwt":{"description":"The JWT signed with the associated issuer's private key.","type":"string"},"id":{"type":"string"}}},"pkg_server_router.GetCredentialStatusResponse":{"type":"object","properties":{"revoked":{"description":"Whether the credential has been revoked.","type":"boolean"},"suspended":{"description":"Whether the credential has been suspended.","type":"boolean"}}},"pkg_server_router.GetCredentialsResponse":{"type":"object","properties":{"credentials":{"description":"Array of credential containers.","type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_internal_credential.Container"}}}},"pkg_server_router.GetDIDByMethodResponse":{"type":"object","properties":{"did":{"$ref":"#/definitions/did.Document"}}},"pkg_server_router.GetDIDMethodsResponse":{"type":"object","properties":{"method":{"type":"array","items":{"$ref":"#/definitions/did.Method"}}}},"pkg_server_router.GetDIDsByMethodResponse":{"type":"object","properties":{"dids":{"type":"array","items":{"$ref":"#/definitions/did.Document"}}}},"pkg_server_router.GetDIDsRequest":{"type":"object","properties":{"filter":{"description":"A standard filter expression conforming to https://google.aip.dev/160.\nNot implemented yet.","type":"string"}}},"pkg_server_router.GetHealthCheckResponse":{"type":"object","properties":{"status":{"description":"Status is always equal to ` + "`" + `OK` + "`" + `.","type":"string"}}},"pkg_server_router.GetKeyDetailsResponse":{"type":"object","properties":{"controller":{"type":"string"},"createdAt":{"type":"string"},"id":{"type":"string"},"type":{"$ref":"#/definitions/crypto.KeyType"}}},"pkg_server_router.GetManifestResponse":{"type":"object","properties":{"credential_manifest":{"$ref":"#/definitions/manifest.CredentialManifest"},"id":{"type":"string"},"manifestJwt":{"type":"string"}}},"pkg_server_router.GetManifestsResponse":{"type":"object","properties":{"manifests":{"type":"array","items":{"$ref":"#/definitions/pkg_server_router.GetManifestResponse"}}}},"pkg_server_router.GetOperationsRequest":{"type":"object","properties":{"filter":{"description":"A standard filter expression conforming to https://google.aip.dev/160.\nFor example: ` + "`" + `done = true` + "`" + `.","type":"string"},"parent":{"description":"The name of the parent's resource. For example: \"/presentation/submissions\".","type":"string"}}},"pkg_server_router.GetOperationsResponse":{"type":"object","properties":{"operations":{"type":"array","items":{"$ref":"#/definitions/pkg_server_router.Operation"}}}},"pkg_server_router.GetPresentationDefinitionResponse":{"type":"object","properties":{"presentationDefinitionJWT":{"description":"Signed envelope that contains the PresentationDefinition created using the privateKey of the author of the\ndefinition.","type":"string"},"presentation_definition":{"$ref":"#/definitions/exchange.PresentationDefinition"}}},"pkg_server_router.GetReadinessResponse":{"type":"object","properties":{"serviceStatuses":{"description":"A map from the name of the service ot the status of that current service.","type":"object","additionalProperties":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_framework.Status"}},"status":{"description":"Overall status of the ssi service.","allOf":[{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_framework.Status"}]}}},"pkg_server_router.GetResponseResponse":{"type":"object","properties":{"credential_response":{"$ref":"#/definitions/manifest.CredentialResponse"},"responseJwt":{"type":"string"},"verifiableCredentials":{"description":"this is an interface type to union Data Integrity and JWT style VCs"}}},"pkg_server_router.GetResponsesResponse":{"type":"object","properties":{"responses":{"type":"array","items":{"$ref":"#/definitions/manifest.CredentialResponse"}}}},"pkg_server_router.GetSchemaResponse":{"type":"object","properties":{"schema":{"$ref":"#/definitions/schema.VCJSONSchema"},"schemaJwt":{"type":"string"}}},"pkg_server_router.GetSchemasResponse":{"type":"object","properties":{"schemas":{"type":"array","items":{"$ref":"#/definitions/pkg_server_router.GetSchemaResponse"}}}},"pkg_server_router.GetSubmissionResponse":{"type":"object","properties":{"submission":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_presentation_model.Submission"}}},"pkg_server_router.GetWebhookResponse":{"type":"object","properties":{"webhook":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_webhook.Webhook"}}},"pkg_server_router.GetWebhooksResponse":{"type":"object","properties":{"webhooks":{"type":"array","items":{"$ref":"#/definitions/pkg_server_router.GetWebhookResponse"}}}},"pkg_server_router.ListDefinitionsRequest":{"type":"object"},"pkg_server_router.ListDefinitionsResponse":{"type":"object","properties":{"definitions":{"type":"array","items":{"$ref":"#/definitions/exchange.PresentationDefinition"}}}},"pkg_server_router.ListIssuanceTemplatesResponse":{"type":"object","properties":{"issuanceTemplates":{"type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.Template"}}}},"pkg_server_router.ListSubmissionRequest":{"type":"object","properties":{"filter":{"description":"A standard filter expression conforming to https://google.aip.dev/160.\nFor example: ` + "`" + `status = \"done\"` + "`" + `.","type":"string"}}},"pkg_server_router.ListSubmissionResponse":{"type":"object","properties":{"submissions":{"type":"array","items":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_presentation_model.Submission"}}}},"pkg_server_router.Operation":{"type":"object","required":["done","id"],"properties":{"done":{"description":"Whether this operation has finished.","type":"boolean"},"id":{"description":"The name of the resource related to this operation. E.g. \"presentations/submissions/\u003cuuid\u003e\"","type":"string"},"result":{"description":"Populated if Done == true.","allOf":[{"$ref":"#/definitions/pkg_server_router.OperationResult"}]}}},"pkg_server_router.OperationResult":{"type":"object","properties":{"error":{"description":"Populated when there was an error with the operation.","type":"string"},"response":{"description":"Populated iff Error == \"\". The type should be specified in the calling APIs documentation."}}},"pkg_server_router.ResolveDIDResponse":{"type":"object","properties":{"didDocument":{"$ref":"#/definitions/did.Document"},"didDocumentMetadata":{"$ref":"#/definitions/resolution.DocumentMetadata"},"didResolutionMetadata":{"$ref":"#/definitions/resolution.ResolutionMetadata"}}},"pkg_server_router.ReviewApplicationRequest":{"type":"object","properties":{"approved":{"type":"boolean"},"credential_overrides":{"description":"Overrides to apply to the credentials that will be created. Keys are the ID that corresponds to an\nOutputDescriptor.ID from the manifest.","type":"object","additionalProperties":{"$ref":"#/definitions/github_com_tbd54566975_ssi-service_pkg_service_manifest_model.CredentialOverride"}},"reason":{"type":"string"}}},"pkg_server_router.ReviewSubmissionRequest":{"type":"object","required":["approved"],"properties":{"approved":{"type":"boolean"},"reason":{"type":"string"}}},"pkg_server_router.ReviewSubmissionResponse":{"type":"object","required":["status"],"properties":{"reason":{"description":"The reason why the submission was approved or denied.","type":"string"},"status":{"description":"One of {` + "`" + `pending` + "`" + `, ` + "`" + `approved` + "`" + `, ` + "`" + `denied` + "`" + `, ` + "`" + `cancelled` + "`" + `}.","type":"string"},"verifiablePresentation":{"description":"The verifiable presentation containing the presentation_submission along with the credentials presented.","allOf":[{"$ref":"#/definitions/credential.VerifiablePresentation"}]}}},"pkg_server_router.StoreKeyRequest":{"type":"object","required":["base58PrivateKey","controller","id","type"],"properties":{"base58PrivateKey":{"description":"Base58 encoding of the bytes that result from marshalling the private key using golang's implementation.","type":"string"},"controller":{"description":"See https://www.w3.org/TR/did-core/#did-controller","type":"string"},"id":{"description":"The ` + "`" + `id` + "`" + ` field is the unique identifier for this object. If set to a resolvable DID, the ssi-service will use\nthe private key encoded in the ` + "`" + `PrivateKeyBase58` + "`" + ` field of this object to sign objects issued or authored by this\nDID; otherwise, it will only be used to identify this object.","type":"string"},"type":{"description":"Identifies the cryptographic algorithm family used with the key.\nOne of the following: \"Ed25519\", \"X25519\", \"secp256k1\", \"P-224\", \"P-256\", \"P-384\", \"P-521\", \"RSA\".","allOf":[{"$ref":"#/definitions/crypto.KeyType"}]}}},"pkg_server_router.SubmitApplicationRequest":{"type":"object","required":["applicationJwt"],"properties":{"applicationJwt":{"description":"Contains the following properties:\nApplication  manifestsdk.CredentialApplication ` + "`" + `json:\"credential_application\" validate:\"required\"` + "`" + `\nCredentials  []interface{}                     ` + "`" + `json:\"vcs\" validate:\"required\"` + "`" + `","type":"string"}}},"pkg_server_router.SubmitApplicationResponse":{"type":"object","properties":{"credential_response":{"$ref":"#/definitions/manifest.CredentialResponse"},"responseJwt":{"type":"string"},"verifiableCredentials":{"description":"this is an any type to union Data Integrity and JWT style VCs","type":"array","items":{}}}},"pkg_server_router.UpdateCredentialStatusRequest":{"type":"object","properties":{"revoked":{"description":"The new revoked status of this credential. The status will be saved in the encodedList of the StatusList2021\ncredential associated with this VC.","type":"boolean"},"suspended":{"type":"boolean"}}},"pkg_server_router.UpdateCredentialStatusResponse":{"type":"object","properties":{"revoked":{"description":"The updated status of this credential.","type":"boolean"},"suspended":{"type":"boolean"}}},"pkg_server_router.VerifyCredentialRequest":{"type":"object","properties":{"credential":{"description":"A credential secured via data integrity. Must have the \"proof\" property set.","allOf":[{"$ref":"#/definitions/credential.VerifiableCredential"}]},"credentialJwt":{"description":"A JWT that encodes a credential.","type":"string"}}},"pkg_server_router.VerifyCredentialResponse":{"type":"object","properties":{"reason":{"description":"The reason why this credential couldn't be verified.","type":"string"},"verified":{"description":"Whether the credential was verified.","type":"boolean"}}},"pkg_server_router.VerifySchemaRequest":{"type":"object","required":["schemaJwt"],"properties":{"schemaJwt":{"type":"string"}}},"pkg_server_router.VerifySchemaResponse":{"type":"object","required":["verified"],"properties":{"reason":{"type":"string"},"verified":{"type":"boolean"}}},"rendering.ColorResource":{"type":"object","properties":{"color":{"description":"a HEX string color value (e.g. #00000)","type":"string"}}},"rendering.DataDisplay":{"type":"object","properties":{"description":{"$ref":"#/definitions/rendering.DisplayMappingObject"},"properties":{"type":"array","items":{"$ref":"#/definitions/rendering.LabeledDisplayMappingObject"}},"subtitle":{"$ref":"#/definitions/rendering.DisplayMappingObject"},"title":{"$ref":"#/definitions/rendering.DisplayMappingObject"}}},"rendering.DisplayMappingObject":{"type":"object","properties":{"fallback":{"type":"string"},"path":{"description":"Ifa path is present it must be an array of JSON Path string expressions\nand the schema property must also be present.","type":"array","items":{"type":"string"}},"schema":{"$ref":"#/definitions/rendering.DisplayMappingSchema"},"text":{"description":"If path is not present, the text value is required with no other properties","type":"string"}}},"rendering.DisplayMappingSchema":{"type":"object","required":["type"],"properties":{"format":{"description":"Must be present if the value of the type property is \"string\"","allOf":[{"$ref":"#/definitions/rendering.SchemaFormat"}]},"type":{"$ref":"#/definitions/rendering.SchemaType"}}},"rendering.EntityStyleDescriptor":{"type":"object","properties":{"background":{"$ref":"#/definitions/rendering.ColorResource"},"hero":{"$ref":"#/definitions/rendering.ImageResource"},"text":{"$ref":"#/definitions/rendering.ColorResource"},"thumbnail":{"$ref":"#/definitions/rendering.ImageResource"}}},"rendering.ImageResource":{"type":"object","required":["uri"],"properties":{"alt":{"description":"Describes the alternate text for a logo image","type":"string"},"uri":{"description":"Must be a valid URI string to an image resource","type":"string"}}},"rendering.LabeledDisplayMappingObject":{"type":"object","required":["label"],"properties":{"fallback":{"type":"string"},"label":{"type":"string"},"path":{"description":"Ifa path is present it must be an array of JSON Path string expressions\nand the schema property must also be present.","type":"array","items":{"type":"string"}},"schema":{"$ref":"#/definitions/rendering.DisplayMappingSchema"},"text":{"description":"If path is not present, the text value is required with no other properties","type":"string"}}},"rendering.SchemaFormat":{"type":"string","enum":["date-time","time","date","email","idn-email","hostname","idn-hostname","ipv4","ipv6","uri","uri-reference","iri","iri-reference"],"x-enum-varnames":["DateTimeFormat","TimeFormat","DateFormat","EmailFormat","IDNEmailFormat","HostnameFormat","IDNHostnameFormat","IPV4Format","IPV6Format","URIFormat","URIReferenceFormat","IRIFormat","IRIReferenceFormat"]},"rendering.SchemaType":{"type":"string","enum":["string","boolean","number","integer"],"x-enum-varnames":["StringType","BooleanType","NumberType","IntegerType"]},"resolution.DocumentMetadata":{"type":"object","properties":{"canonicalId":{"type":"string"},"created":{"type":"string"},"deactivated":{"type":"boolean"},"equivalentId":{"type":"string"},"nextUpdate":{"type":"string"},"nextVersionId":{"type":"string"},"updated":{"type":"string"},"versionId":{"type":"string"}}},"resolution.ResolutionError":{"type":"object","properties":{"code":{"type":"string"},"invalidDid":{"type":"boolean"},"notFound":{"type":"boolean"},"representationNotSupported":{"type":"boolean"}}},"resolution.ResolutionMetadata":{"type":"object","properties":{"contentType":{"type":"string"},"error":{"$ref":"#/definitions/resolution.ResolutionError"}}},"schema.JSONSchema":{"type":"object","additionalProperties":{}},"schema.VCJSONSchema":{"type":"object","properties":{"author":{"type":"string"},"authored":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"schema":{"$ref":"#/definitions/schema.JSONSchema"},"type":{"type":"string"},"version":{"type":"string"}}},"time.Duration":{"type":"integer","enum":[-9223372036854775808,9223372036854775807,1,1000,1000000,1000000000,60000000000,3600000000000],"x-enum-varnames":["minDuration","maxDuration","Nanosecond","Microsecond","Millisecond","Second","Minute","Hour"]}}}`
 
 // SwaggerInfo holds exported Swagger Info so clients can modify it
 var SwaggerInfo = &swag.Spec{
diff --git a/doc/swagger.yaml b/doc/swagger.yaml
index b455302..926f27b 100644
--- a/doc/swagger.yaml
+++ b/doc/swagger.yaml
@@ -563,10 +563,10 @@ definitions:
     x-enum-varnames:
     - StatusReady
     - StatusNotReady
-  github_com_tbd54566975_ssi-service_pkg_service_issuing.ClaimTemplates:
+  github_com_tbd54566975_ssi-service_pkg_service_issuance.ClaimTemplates:
     additionalProperties: {}
     type: object
-  github_com_tbd54566975_ssi-service_pkg_service_issuing.CredentialTemplate:
+  github_com_tbd54566975_ssi-service_pkg_service_issuance.CredentialTemplate:
     properties:
       credentialInputDescriptor:
         description: |-
@@ -579,14 +579,14 @@ definitions:
         type: string
       data:
         allOf:
-        - $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.ClaimTemplates'
+        - $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.ClaimTemplates'
         description: |-
           Data that will be used to determine credential claims.
           Values may be json path like strings, or any other JSON primitive. Each entry will be used to come up with a
           claim about the credentialSubject in the credential that will be issued.
       expiry:
         allOf:
-        - $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.TimeLike'
+        - $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.TimeLike'
         description: Parameter to determine the expiry of the credential.
       id:
         description: ID corresponding to an OutputDescriptor.ID from the manifest.
@@ -598,7 +598,7 @@ definitions:
         description: ID of the CredentialSchema to be used for the issued credential.
         type: string
     type: object
-  github_com_tbd54566975_ssi-service_pkg_service_issuing.IssuanceTemplate:
+  github_com_tbd54566975_ssi-service_pkg_service_issuance.Template:
     properties:
       credentialManifest:
         description: ID of the credential manifest that this template corresponds
@@ -607,13 +607,13 @@ definitions:
       credentials:
         description: Info required to create a credential from a credential application.
         items:
-          $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.CredentialTemplate'
+          $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.CredentialTemplate'
         type: array
       id:
         description: ID of this template.
         type: string
       issuer:
-        description: ID of the issuer that will be issuing the credentials.
+        description: ID of the issuer that will be issuance the credentials.
         type: string
       issuerKid:
         description: ID of the key that will be used to sign the credentials.
@@ -623,7 +623,7 @@ definitions:
     - issuer
     - issuerKid
     type: object
-  github_com_tbd54566975_ssi-service_pkg_service_issuing.TimeLike:
+  github_com_tbd54566975_ssi-service_pkg_service_issuance.TimeLike:
     properties:
       duration:
         allOf:
@@ -954,13 +954,13 @@ definitions:
       credentials:
         description: Info required to create a credential from a credential application.
         items:
-          $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.CredentialTemplate'
+          $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.CredentialTemplate'
         type: array
       id:
         description: ID of this template.
         type: string
       issuer:
-        description: ID of the issuer that will be issuing the credentials.
+        description: ID of the issuer that will be issuance the credentials.
         type: string
       issuerKid:
         description: ID of the key that will be used to sign the credentials.
@@ -1320,7 +1320,7 @@ definitions:
     properties:
       issuanceTemplates:
         items:
-          $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.IssuanceTemplate'
+          $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.Template'
         type: array
     type: object
   pkg_server_router.ListSubmissionRequest:
@@ -2219,7 +2219,7 @@ paths:
         "201":
           description: Created
           schema:
-            $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.IssuanceTemplate'
+            $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.Template'
         "400":
           description: Bad request
           schema:
@@ -2230,7 +2230,7 @@ paths:
             type: string
       summary: Create issuance template
       tags:
-      - IssuingAPI
+      - IssuanceAPI
   /v1/issuancetemplates/{id}:
     delete:
       consumes:
@@ -2259,7 +2259,7 @@ paths:
             type: string
       summary: Delete issuance template
       tags:
-      - IssuingAPI
+      - IssuanceAPI
     get:
       consumes:
       - application/json
@@ -2276,14 +2276,14 @@ paths:
         "200":
           description: OK
           schema:
-            $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuing.IssuanceTemplate'
+            $ref: '#/definitions/github_com_tbd54566975_ssi-service_pkg_service_issuance.Template'
         "400":
           description: Bad request
           schema:
             type: string
       summary: Get issuance template
       tags:
-      - IssuingAPI
+      - IssuanceAPI
   /v1/keys:
     put:
       consumes:
diff --git a/pkg/server/router/issuance.go b/pkg/server/router/issuance.go
index 0fc6d2d..53a8a86 100644
--- a/pkg/server/router/issuance.go
+++ b/pkg/server/router/issuance.go
@@ -9,17 +9,17 @@ import (
 
 	"github.com/tbd54566975/ssi-service/pkg/server/framework"
 	svcframework "github.com/tbd54566975/ssi-service/pkg/service/framework"
-	"github.com/tbd54566975/ssi-service/pkg/service/issuing"
+	"github.com/tbd54566975/ssi-service/pkg/service/issuance"
 )
 
 type IssuanceRouter struct {
-	service issuing.Service
+	service issuance.Service
 }
 
 func NewIssuanceRouter(svc svcframework.Service) (*IssuanceRouter, error) {
-	service, ok := svc.(*issuing.Service)
+	service, ok := svc.(*issuance.Service)
 	if !ok {
-		return nil, errors.New("could not cast to issuing service type")
+		return nil, errors.New("could not cast to issuance service type")
 	}
 	return &IssuanceRouter{service: *service}, nil
 }
@@ -28,11 +28,11 @@ func NewIssuanceRouter(svc svcframework.Service) (*IssuanceRouter, error) {
 //
 //	@Summary		Get issuance template
 //	@Description	Get an issuance template by its id
-//	@Tags			IssuingAPI
+//	@Tags			IssuanceAPI
 //	@Accept			json
 //	@Produce		json
 //	@Param			id	path		string	true	"ID"
-//	@Success		200	{object}	issuing.IssuanceTemplate
+//	@Success		200	{object}	issuance.Template
 //	@Failure		400	{string}	string	"Bad request"
 //	@Router			/v1/issuancetemplates/{id} [get]
 func (ir IssuanceRouter) GetIssuanceTemplate(c *gin.Context) error {
@@ -42,7 +42,7 @@ func (ir IssuanceRouter) GetIssuanceTemplate(c *gin.Context) error {
 		return framework.LoggingRespondErrMsg(c, errMsg, http.StatusBadRequest)
 	}
 
-	issuanceTemplate, err := ir.service.GetIssuanceTemplate(c, &issuing.GetIssuanceTemplateRequest{ID: *id})
+	issuanceTemplate, err := ir.service.GetIssuanceTemplate(c, &issuance.GetIssuanceTemplateRequest{ID: *id})
 	if err != nil {
 		errMsg := "getting issuance template"
 		return framework.LoggingRespondErrWithMsg(c, err, errMsg, http.StatusInternalServerError)
@@ -51,22 +51,22 @@ func (ir IssuanceRouter) GetIssuanceTemplate(c *gin.Context) error {
 }
 
 type CreateIssuanceTemplateRequest struct {
-	issuing.IssuanceTemplate
+	issuance.Template
 }
 
-func (r CreateIssuanceTemplateRequest) ToServiceRequest() *issuing.CreateIssuanceTemplateRequest {
-	return &issuing.CreateIssuanceTemplateRequest{IssuanceTemplate: r.IssuanceTemplate}
+func (r CreateIssuanceTemplateRequest) toServiceRequest() *issuance.CreateIssuanceTemplateRequest {
+	return &issuance.CreateIssuanceTemplateRequest{IssuanceTemplate: r.Template}
 }
 
 // CreateIssuanceTemplate godoc
 //
 //	@Summary		Create issuance template
 //	@Description	Create issuance template
-//	@Tags			IssuingAPI
+//	@Tags			IssuanceAPI
 //	@Accept			json
 //	@Produce		json
 //	@Param			request	body		CreateIssuanceTemplateRequest	true	"request body"
-//	@Success		201		{object}	issuing.IssuanceTemplate
+//	@Success		201		{object}	issuance.Template
 //	@Failure		400		{string}	string	"Bad request"
 //	@Failure		500		{string}	string	"Internal server error"
 //	@Router			/v1/issuancetemplates [put]
@@ -77,7 +77,7 @@ func (ir IssuanceRouter) CreateIssuanceTemplate(c *gin.Context) error {
 		return framework.LoggingRespondErrWithMsg(c, err, errMsg, http.StatusBadRequest)
 	}
 
-	template, err := ir.service.CreateIssuanceTemplate(c, request.ToServiceRequest())
+	template, err := ir.service.CreateIssuanceTemplate(c, request.toServiceRequest())
 	if err != nil {
 		errMsg := "creating issuance template"
 		return framework.LoggingRespondErrWithMsg(c, err, errMsg, http.StatusInternalServerError)
@@ -90,7 +90,7 @@ func (ir IssuanceRouter) CreateIssuanceTemplate(c *gin.Context) error {
 //
 //	@Summary		Delete issuance template
 //	@Description	Delete issuance template by ID
-//	@Tags			IssuingAPI
+//	@Tags			IssuanceAPI
 //	@Accept			json
 //	@Produce		json
 //	@Param			id	path		string	true	"ID"
@@ -105,7 +105,7 @@ func (ir IssuanceRouter) DeleteIssuanceTemplate(c *gin.Context) error {
 		return framework.LoggingRespondErrMsg(c, errMsg, http.StatusBadRequest)
 	}
 
-	if err := ir.service.DeleteIssuanceTemplate(c, &issuing.DeleteIssuanceTemplateRequest{ID: *id}); err != nil {
+	if err := ir.service.DeleteIssuanceTemplate(c, &issuance.DeleteIssuanceTemplateRequest{ID: *id}); err != nil {
 		errMsg := fmt.Sprintf("could not delete issuance template with id: %s", *id)
 		return framework.LoggingRespondErrWithMsg(c, err, errMsg, http.StatusInternalServerError)
 	}
@@ -114,14 +114,14 @@ func (ir IssuanceRouter) DeleteIssuanceTemplate(c *gin.Context) error {
 }
 
 type ListIssuanceTemplatesResponse struct {
-	IssuanceTemplates []issuing.IssuanceTemplate `json:"issuanceTemplates,omitempty"`
+	IssuanceTemplates []issuance.Template `json:"issuanceTemplates,omitempty"`
 }
 
 // ListIssuanceTemplates godoc
 //
 //	@Summary		Lists issuance templates
 //	@Description	Lists all issuance templates stored in this service.
-//	@Tags			IssuingAPI
+//	@Tags			IssuanceAPI
 //	@Accept			json
 //	@Produce		json
 //	@Success		200	{object}	ListIssuanceTemplatesResponse
@@ -129,7 +129,7 @@ type ListIssuanceTemplatesResponse struct {
 //	@Failure		500	{string}	string	"Internal server error"
 //	@Router			/v1/manifests [get]
 func (ir IssuanceRouter) ListIssuanceTemplates(c *gin.Context) error {
-	gotManifests, err := ir.service.ListIssuanceTemplates(c, &issuing.ListIssuanceTemplatesRequest{})
+	gotManifests, err := ir.service.ListIssuanceTemplates(c, &issuance.ListIssuanceTemplatesRequest{})
 
 	if err != nil {
 		errMsg := "could not get templates"
diff --git a/pkg/server/server.go b/pkg/server/server.go
index 5d1e9d8..fc75c74 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -118,7 +118,7 @@ func (s *SSIServer) instantiateRouter(service svcframework.Service, webhookServi
 		return s.PresentationAPI(service, webhookService)
 	case svcframework.Operation:
 		return s.OperationAPI(service)
-	case svcframework.Issuing:
+	case svcframework.Issuance:
 		return s.IssuanceAPI(service)
 	case svcframework.Webhook:
 		return s.WebhookAPI(service)
diff --git a/pkg/service/framework/framework.go b/pkg/service/framework/framework.go
index ec19a48..17e604b 100644
--- a/pkg/service/framework/framework.go
+++ b/pkg/service/framework/framework.go
@@ -10,7 +10,7 @@ const (
 
 	DID          Type = "did"
 	Schema       Type = "schema"
-	Issuing      Type = "issuing"
+	Issuance     Type = "issuance"
 	Credential   Type = "credential"
 	KeyStore     Type = "keystore"
 	Manifest     Type = "manifest"
diff --git a/pkg/service/issuing/model.go b/pkg/service/issuance/model.go
similarity index 87%
rename from pkg/service/issuing/model.go
rename to pkg/service/issuance/model.go
index c452c1d..a87f7bf 100644
--- a/pkg/service/issuing/model.go
+++ b/pkg/service/issuance/model.go
@@ -1,4 +1,4 @@
-package issuing
+package issuance
 
 import (
 	"reflect"
@@ -49,14 +49,15 @@ type CredentialTemplate struct {
 	Revocable bool `json:"revocable"`
 }
 
-type IssuanceTemplate struct {
+// Template is a template for issuing credentials.
+type Template struct {
 	// ID of this template.
 	ID string `json:"id"`
 
 	// ID of the credential manifest that this template corresponds to.
 	CredentialManifest string `json:"credentialManifest" validate:"required"`
 
-	// ID of the issuer that will be issuing the credentials.
+	// ID of the issuer that will be issuance the credentials.
 	Issuer string `json:"issuer" validate:"required"`
 
 	// ID of the key that will be used to sign the credentials.
@@ -66,25 +67,25 @@ type IssuanceTemplate struct {
 	Credentials []CredentialTemplate `json:"credentials"`
 }
 
-func (it *IssuanceTemplate) IsEmpty() bool {
+func (it *Template) IsEmpty() bool {
 	if it == nil {
 		return true
 	}
-	return reflect.DeepEqual(*it, IssuanceTemplate{})
+	return reflect.DeepEqual(*it, Template{})
 }
 
-func (it *IssuanceTemplate) IsValid() bool {
+func (it *Template) IsValid() bool {
 	return util.IsValidStruct(it) == nil
 }
 
 type GetIssuanceTemplateResponse struct {
 	// The template that was requested.
-	IssuanceTemplate *IssuanceTemplate `json:"issuanceTemplate"`
+	IssuanceTemplate *Template `json:"issuanceTemplate"`
 }
 
 type CreateIssuanceTemplateRequest struct {
 	// The template to create.
-	IssuanceTemplate IssuanceTemplate `json:"issuanceTemplate"`
+	IssuanceTemplate Template `json:"issuanceTemplate"`
 }
 
 func (r CreateIssuanceTemplateRequest) IsValid() bool {
@@ -108,5 +109,5 @@ func (r ListIssuanceTemplatesRequest) Validate() error {
 
 type ListIssuanceTemplatesResponse struct {
 	// The issuance templates that satisfy the query conditions.
-	IssuanceTemplates []IssuanceTemplate `json:"issuanceTemplates"`
+	IssuanceTemplates []Template `json:"issuanceTemplates"`
 }
diff --git a/pkg/service/issuing/service.go b/pkg/service/issuance/service.go
similarity index 88%
rename from pkg/service/issuing/service.go
rename to pkg/service/issuance/service.go
index 47620d0..e7b3230 100644
--- a/pkg/service/issuing/service.go
+++ b/pkg/service/issuance/service.go
@@ -1,4 +1,4 @@
-package issuing
+package issuance
 
 import (
 	"context"
@@ -14,16 +14,16 @@ import (
 )
 
 type Service struct {
-	config          config.IssuingServiceConfig
+	config          config.IssuanceServiceConfig
 	storage         Storage
 	manifestStorage manifeststg.Storage
 	schemaStorage   schema.Storage
 }
 
-func NewIssuingService(config config.IssuingServiceConfig, s storage.ServiceStorage) (*Service, error) {
-	issuingStorage, err := NewIssuingStorage(s)
+func NewIssuanceService(config config.IssuanceServiceConfig, s storage.ServiceStorage) (*Service, error) {
+	issuanceStorage, err := NewIssuanceStorage(s)
 	if err != nil {
-		return nil, errors.Wrap(err, "creating issuing storage")
+		return nil, errors.Wrap(err, "creating issuance storage")
 	}
 	manifestStorage, err := manifeststg.NewManifestStorage(s)
 	if err != nil {
@@ -34,7 +34,7 @@ func NewIssuingService(config config.IssuingServiceConfig, s storage.ServiceStor
 		return nil, errors.Wrap(err, "creating manifest storage")
 	}
 	return &Service{
-		storage:         *issuingStorage,
+		storage:         *issuanceStorage,
 		config:          config,
 		manifestStorage: *manifestStorage,
 		schemaStorage:   *schemaStorage,
@@ -52,7 +52,7 @@ func (s *Service) GetIssuanceTemplate(ctx context.Context, request *GetIssuanceT
 	return &GetIssuanceTemplateResponse{IssuanceTemplate: serviceModel(*storedIssuanceTemplate)}, nil
 }
 
-func (s *Service) CreateIssuanceTemplate(ctx context.Context, request *CreateIssuanceTemplateRequest) (*IssuanceTemplate, error) {
+func (s *Service) CreateIssuanceTemplate(ctx context.Context, request *CreateIssuanceTemplateRequest) (*Template, error) {
 	if !request.IsValid() {
 		return nil, errors.New("invalid create issuance template request")
 	}
@@ -87,7 +87,7 @@ func (s *Service) CreateIssuanceTemplate(ctx context.Context, request *CreateIss
 	return serviceModel(storedTemplate), nil
 }
 
-func serviceModel(template StoredIssuanceTemplate) *IssuanceTemplate {
+func serviceModel(template StoredIssuanceTemplate) *Template {
 	return &template.IssuanceTemplate
 }
 
@@ -113,7 +113,7 @@ func (s *Service) ListIssuanceTemplates(ctx context.Context, request *ListIssuan
 }
 
 func (s *Service) Type() framework.Type {
-	return framework.Issuing
+	return framework.Issuance
 }
 
 func (s *Service) Status() framework.Status {
diff --git a/pkg/service/issuing/storage.go b/pkg/service/issuance/storage.go
similarity index 88%
rename from pkg/service/issuing/storage.go
rename to pkg/service/issuance/storage.go
index b633e28..fa5d83e 100644
--- a/pkg/service/issuing/storage.go
+++ b/pkg/service/issuance/storage.go
@@ -1,4 +1,4 @@
-package issuing
+package issuance
 
 import (
 	"context"
@@ -15,15 +15,15 @@ type Storage struct {
 
 const namespace = "issuance_template"
 
-func NewIssuingStorage(s storage.ServiceStorage) (*Storage, error) {
+func NewIssuanceStorage(s storage.ServiceStorage) (*Storage, error) {
 	if s == nil {
-		return nil, errors.New("s cannot be nil")
+		return nil, errors.New("storage cannot be nil")
 	}
 	return &Storage{db: s}, nil
 }
 
 type StoredIssuanceTemplate struct {
-	IssuanceTemplate IssuanceTemplate `json:"issuanceTemplate"`
+	IssuanceTemplate Template `json:"issuanceTemplate"`
 }
 
 func (s Storage) StoreIssuanceTemplate(ctx context.Context, template StoredIssuanceTemplate) error {
@@ -65,12 +65,12 @@ func (s Storage) DeleteIssuanceTemplate(ctx context.Context, id string) error {
 	return nil
 }
 
-func (s Storage) ListIssuanceTemplates(ctx context.Context) ([]IssuanceTemplate, error) {
+func (s Storage) ListIssuanceTemplates(ctx context.Context) ([]Template, error) {
 	m, err := s.db.ReadAll(ctx, namespace)
 	if err != nil {
 		return nil, errors.Wrap(err, "reading all")
 	}
-	ts := make([]IssuanceTemplate, len(m))
+	ts := make([]Template, len(m))
 	i := 0
 	for k, v := range m {
 		if err = json.Unmarshal(v, &ts[i]); err != nil {
diff --git a/pkg/service/manifest/response.go b/pkg/service/manifest/response.go
index c5066f2..ace209d 100644
--- a/pkg/service/manifest/response.go
+++ b/pkg/service/manifest/response.go
@@ -19,7 +19,7 @@ import (
 	cred "github.com/tbd54566975/ssi-service/internal/credential"
 	"github.com/tbd54566975/ssi-service/internal/keyaccess"
 	"github.com/tbd54566975/ssi-service/pkg/service/credential"
-	"github.com/tbd54566975/ssi-service/pkg/service/issuing"
+	"github.com/tbd54566975/ssi-service/pkg/service/issuance"
 	"github.com/tbd54566975/ssi-service/pkg/service/keystore"
 	"github.com/tbd54566975/ssi-service/pkg/service/manifest/model"
 )
@@ -50,13 +50,13 @@ func (s Service) signCredentialResponse(ctx context.Context, issuerKID string, r
 // buildFulfillmentCredentialResponseFromTemplate builds a credential response from a template
 func (s Service) buildFulfillmentCredentialResponseFromTemplate(ctx context.Context,
 	applicantDID, manifestID, issuerKID string, credManifest manifest.CredentialManifest,
-	template issuing.IssuanceTemplate, application manifest.CredentialApplication,
+	template issuance.Template, application manifest.CredentialApplication,
 	applicationJSON map[string]any) (*manifest.CredentialResponse, []cred.Container, error) {
 	if template.IsValid() {
 		return nil, nil, errors.New("issuance template is not valid")
 	}
 
-	templateMap := make(map[string]issuing.CredentialTemplate)
+	templateMap := make(map[string]issuance.CredentialTemplate)
 	issuingKID := issuerKID
 	if template.IssuerKID != "" {
 		issuingKID = template.IssuerKID
@@ -95,7 +95,7 @@ func (s Service) buildFulfillmentCredentialResponse(ctx context.Context, applica
 // unifies both templated and override paths for building a credential response
 func (s Service) fulfillmentCredentialResponse(ctx context.Context, responseBuilder manifest.CredentialResponseBuilder,
 	applicantDID, issuerKID string, credManifest manifest.CredentialManifest, application *manifest.CredentialApplication,
-	templateMap map[string]issuing.CredentialTemplate, applicationJSON map[string]any,
+	templateMap map[string]issuance.CredentialTemplate, applicationJSON map[string]any,
 	credentialOverrides map[string]model.CredentialOverride) (*manifest.CredentialResponse, []cred.Container, error) {
 
 	creds := make([]cred.Container, 0, len(credManifest.OutputDescriptors))
@@ -157,7 +157,7 @@ func (s Service) fulfillmentCredentialResponse(ctx context.Context, responseBuil
 }
 
 func (s Service) applyIssuanceTemplate(credentialRequest credential.CreateCredentialRequest,
-	templateMap map[string]issuing.CredentialTemplate, od manifest.OutputDescriptor,
+	templateMap map[string]issuance.CredentialTemplate, od manifest.OutputDescriptor,
 	applicationJSON map[string]any, credManifest manifest.CredentialManifest, submission exchange.PresentationSubmission) (*credential.CreateCredentialRequest, error) {
 	ct, ok := templateMap[od.ID]
 	if !ok {
@@ -210,7 +210,7 @@ func (s Service) applyCredentialOverrides(credentialRequest credential.CreateCre
 	return credentialRequest
 }
 
-func getCredentialJSON(applicationJSON map[string]any, ct issuing.CredentialTemplate,
+func getCredentialJSON(applicationJSON map[string]any, ct issuance.CredentialTemplate,
 	credManifest manifest.CredentialManifest, submission exchange.PresentationSubmission) (any, error) {
 	if ct.CredentialInputDescriptor == "" {
 		return nil, errors.New("cannot provide input descriptor when credential template does not have input descriptor")
diff --git a/pkg/service/manifest/service.go b/pkg/service/manifest/service.go
index d5a1cd0..9a763b8 100644
--- a/pkg/service/manifest/service.go
+++ b/pkg/service/manifest/service.go
@@ -17,7 +17,7 @@ import (
 	credint "github.com/tbd54566975/ssi-service/internal/credential"
 	"github.com/tbd54566975/ssi-service/pkg/service/credential"
 	"github.com/tbd54566975/ssi-service/pkg/service/framework"
-	"github.com/tbd54566975/ssi-service/pkg/service/issuing"
+	"github.com/tbd54566975/ssi-service/pkg/service/issuance"
 	"github.com/tbd54566975/ssi-service/pkg/service/keystore"
 	"github.com/tbd54566975/ssi-service/pkg/service/manifest/model"
 	manifeststg "github.com/tbd54566975/ssi-service/pkg/service/manifest/storage"
@@ -30,7 +30,7 @@ import (
 type Service struct {
 	storage                 *manifeststg.Storage
 	opsStorage              *operation.Storage
-	issuanceTemplateStorage *issuing.Storage
+	issuanceTemplateStorage *issuance.Storage
 	config                  config.ManifestServiceConfig
 
 	// external dependencies
@@ -82,14 +82,14 @@ func NewManifestService(config config.ManifestServiceConfig, s storage.ServiceSt
 	if err != nil {
 		return nil, sdkutil.LoggingErrorMsg(err, "could not instantiate storage for the operations")
 	}
-	issuingStorage, err := issuing.NewIssuingStorage(s)
+	issuanceStorage, err := issuance.NewIssuanceStorage(s)
 	if err != nil {
 		return nil, sdkutil.LoggingErrorMsg(err, "could not instantiate storage for issuance templates")
 	}
 	return &Service{
 		storage:                 manifestStorage,
 		opsStorage:              opsStorage,
-		issuanceTemplateStorage: issuingStorage,
+		issuanceTemplateStorage: issuanceStorage,
 		config:                  config,
 		keyStore:                keyStore,
 		didResolver:             didResolver,
@@ -371,7 +371,7 @@ func (s Service) attemptAutomaticIssuance(ctx context.Context, request model.Sub
 		ResponseJWT:  *responseJWT,
 	}
 	_, storedOp, err := s.storage.StoreReviewApplication(ctx, applicationID, true,
-		"automatic from issuing template", opcredential.IDFromResponseID(applicationID), storedResponse)
+		"automatic from issuance template", opcredential.IDFromResponseID(applicationID), storedResponse)
 	if err != nil {
 		return nil, errors.Wrap(err, "reviewing application")
 	}
diff --git a/pkg/service/service.go b/pkg/service/service.go
index df77540..01fbfbe 100644
--- a/pkg/service/service.go
+++ b/pkg/service/service.go
@@ -9,7 +9,7 @@ import (
 	"github.com/tbd54566975/ssi-service/pkg/service/credential"
 	"github.com/tbd54566975/ssi-service/pkg/service/did"
 	"github.com/tbd54566975/ssi-service/pkg/service/framework"
-	"github.com/tbd54566975/ssi-service/pkg/service/issuing"
+	"github.com/tbd54566975/ssi-service/pkg/service/issuance"
 	"github.com/tbd54566975/ssi-service/pkg/service/keystore"
 	"github.com/tbd54566975/ssi-service/pkg/service/manifest"
 	"github.com/tbd54566975/ssi-service/pkg/service/operation"
@@ -47,8 +47,8 @@ func validateServiceConfig(config config.ServicesConfig) error {
 	if config.DIDConfig.IsEmpty() {
 		return fmt.Errorf("%s no config provided", framework.DID)
 	}
-	if config.IssuingServiceConfig.IsEmpty() {
-		return fmt.Errorf("%s no config provided", framework.Issuing)
+	if config.IssuanceServiceConfig.IsEmpty() {
+		return fmt.Errorf("%s no config provided", framework.Issuance)
 	}
 	if config.SchemaConfig.IsEmpty() {
 		return fmt.Errorf("%s no config provided", framework.Schema)
@@ -111,9 +111,9 @@ func instantiateServices(config config.ServicesConfig) ([]framework.Service, err
 		return nil, sdkutil.LoggingErrorMsg(err, "could not instantiate the schema service")
 	}
 
-	issuingService, err := issuing.NewIssuingService(config.IssuingServiceConfig, storageProvider)
+	issuanceService, err := issuance.NewIssuanceService(config.IssuanceServiceConfig, storageProvider)
 	if err != nil {
-		return nil, sdkutil.LoggingErrorMsg(err, "could not instantiate the issuing service")
+		return nil, sdkutil.LoggingErrorMsg(err, "could not instantiate the issuance service")
 	}
 
 	credentialService, err := credential.NewCredentialService(config.CredentialConfig, storageProvider, keyStoreService, didResolver, schemaService)
@@ -136,6 +136,6 @@ func instantiateServices(config config.ServicesConfig) ([]framework.Service, err
 		return nil, sdkutil.LoggingErrorMsg(err, "could not instantiate the operation service")
 	}
 
-	return []framework.Service{keyStoreService, didService, schemaService, issuingService, credentialService,
+	return []framework.Service{keyStoreService, didService, schemaService, issuanceService, credentialService,
 		manifestService, presentationService, operationService, webhookService}, nil
 }


Test patch:
diff --git a/config/test.toml b/config/test.toml
index 25304be..48a4500 100644
--- a/config/test.toml
+++ b/config/test.toml
@@ -57,6 +57,9 @@ name = "schema"
 [services.credential]
 name = "credential"
 
+[services.issuance]
+name = "issuance"
+
 [services.manifest]
 name = "manifest"
 
diff --git a/pkg/server/server_issuance_test.go b/pkg/server/server_issuance_test.go
index d7a8ab8..9b9a69e 100644
--- a/pkg/server/server_issuance_test.go
+++ b/pkg/server/server_issuance_test.go
@@ -19,7 +19,7 @@ import (
 	"github.com/tbd54566975/ssi-service/config"
 	"github.com/tbd54566975/ssi-service/pkg/server/router"
 	"github.com/tbd54566975/ssi-service/pkg/service/did"
-	"github.com/tbd54566975/ssi-service/pkg/service/issuing"
+	"github.com/tbd54566975/ssi-service/pkg/service/issuance"
 	"github.com/tbd54566975/ssi-service/pkg/service/manifest/model"
 	"github.com/tbd54566975/ssi-service/pkg/service/schema"
 	"github.com/tbd54566975/ssi-service/pkg/storage"
@@ -37,19 +37,19 @@ func TestIssuanceRouter(t *testing.T) {
 			{
 				name: "returns a template with ID",
 				request: router.CreateIssuanceTemplateRequest{
-					IssuanceTemplate: issuing.IssuanceTemplate{
+					Template: issuance.Template{
 						CredentialManifest: manifest.Manifest.ID,
 						Issuer:             issuerResp.DID.ID,
 						IssuerKID:          issuerResp.DID.VerificationMethod[0].ID,
-						Credentials: []issuing.CredentialTemplate{
+						Credentials: []issuance.CredentialTemplate{
 							{
 								ID:     "output_descriptor_1",
 								Schema: createdSchema.Schema.ID,
-								Data: issuing.ClaimTemplates{
+								Data: issuance.ClaimTemplates{
 									"foo":   "bar",
 									"hello": "$.vcsomething.something",
 								},
-								Expiry: issuing.TimeLike{
+								Expiry: issuance.TimeLike{
 									Time: &now,
 								},
 							},
@@ -60,19 +60,19 @@ func TestIssuanceRouter(t *testing.T) {
 			{
 				name: "returns a template with ID when schema is empty",
 				request: router.CreateIssuanceTemplateRequest{
-					IssuanceTemplate: issuing.IssuanceTemplate{
+					Template: issuance.Template{
 						CredentialManifest: manifest.Manifest.ID,
 						Issuer:             issuerResp.DID.ID,
 						IssuerKID:          issuerResp.DID.VerificationMethod[0].ID,
-						Credentials: []issuing.CredentialTemplate{
+						Credentials: []issuance.CredentialTemplate{
 							{
 								ID:     "output_descriptor_1",
 								Schema: "",
-								Data: issuing.ClaimTemplates{
+								Data: issuance.ClaimTemplates{
 									"foo":   "bar",
 									"hello": "$.vcsomething.something",
 								},
-								Expiry: issuing.TimeLike{
+								Expiry: issuance.TimeLike{
 									Time: &now,
 								},
 							},
@@ -90,7 +90,7 @@ func TestIssuanceRouter(t *testing.T) {
 				err := r.CreateIssuanceTemplate(c)
 				assert.NoError(t, err)
 
-				var resp issuing.IssuanceTemplate
+				var resp issuance.Template
 				assert.NoError(t, json.NewDecoder(w.Body).Decode(&resp))
 				assert.NotEmpty(t, resp.ID)
 			})
@@ -108,19 +108,19 @@ func TestIssuanceRouter(t *testing.T) {
 			{
 				name: "when missing output_descriptor_id",
 				request: router.CreateIssuanceTemplateRequest{
-					IssuanceTemplate: issuing.IssuanceTemplate{
+					Template: issuance.Template{
 						CredentialManifest: manifest.Manifest.ID,
 						Issuer:             issuerResp.DID.ID,
 						IssuerKID:          issuerResp.DID.VerificationMethod[0].ID,
-						Credentials: []issuing.CredentialTemplate{
+						Credentials: []issuance.CredentialTemplate{
 							{
 								ID:     "",
 								Schema: createdSchema.Schema.ID,
-								Data: issuing.ClaimTemplates{
+								Data: issuance.ClaimTemplates{
 									"foo":   "bar",
 									"hello": "$.vcsomething.something",
 								},
-								Expiry: issuing.TimeLike{
+								Expiry: issuance.TimeLike{
 									Time: &now,
 								},
 							},
@@ -132,19 +132,19 @@ func TestIssuanceRouter(t *testing.T) {
 			{
 				name: "when both times are set",
 				request: router.CreateIssuanceTemplateRequest{
-					IssuanceTemplate: issuing.IssuanceTemplate{
+					Template: issuance.Template{
 						CredentialManifest: manifest.Manifest.ID,
 						Issuer:             issuerResp.DID.ID,
 						IssuerKID:          issuerResp.DID.VerificationMethod[0].ID,
-						Credentials: []issuing.CredentialTemplate{
+						Credentials: []issuance.CredentialTemplate{
 							{
 								ID:     "output_descriptor_1",
 								Schema: createdSchema.Schema.ID,
-								Data: issuing.ClaimTemplates{
+								Data: issuance.ClaimTemplates{
 									"foo":   "bar",
 									"hello": "$.vcsomething.something",
 								},
-								Expiry: issuing.TimeLike{
+								Expiry: issuance.TimeLike{
 									Time:     &now,
 									Duration: &duration,
 								},
@@ -157,19 +157,19 @@ func TestIssuanceRouter(t *testing.T) {
 			{
 				name: "when credential schema does not exist",
 				request: router.CreateIssuanceTemplateRequest{
-					IssuanceTemplate: issuing.IssuanceTemplate{
+					Template: issuance.Template{
 						CredentialManifest: manifest.Manifest.ID,
 						Issuer:             issuerResp.DID.ID,
 						IssuerKID:          issuerResp.DID.VerificationMethod[0].ID,
-						Credentials: []issuing.CredentialTemplate{
+						Credentials: []issuance.CredentialTemplate{
 							{
 								ID:     "output_descriptor_1",
 								Schema: "fake schema",
-								Data: issuing.ClaimTemplates{
+								Data: issuance.ClaimTemplates{
 									"foo":   "bar",
 									"hello": "$.vcsomething.something",
 								},
-								Expiry: issuing.TimeLike{
+								Expiry: issuance.TimeLike{
 									Time: &now,
 								},
 							},
@@ -181,19 +181,19 @@ func TestIssuanceRouter(t *testing.T) {
 			{
 				name: "when credential manifest ID is does not exist",
 				request: router.CreateIssuanceTemplateRequest{
-					IssuanceTemplate: issuing.IssuanceTemplate{
+					Template: issuance.Template{
 						CredentialManifest: "fake manifest id",
 						Issuer:             issuerResp.DID.ID,
 						IssuerKID:          issuerResp.DID.VerificationMethod[0].ID,
-						Credentials: []issuing.CredentialTemplate{
+						Credentials: []issuance.CredentialTemplate{
 							{
 								ID:     "output_descriptor_1",
 								Schema: createdSchema.ID,
-								Data: issuing.ClaimTemplates{
+								Data: issuance.ClaimTemplates{
 									"foo":   "bar",
 									"hello": "$.vcsomething.something",
 								},
-								Expiry: issuing.TimeLike{
+								Expiry: issuance.TimeLike{
 									Time: &now,
 								},
 							},
@@ -205,17 +205,17 @@ func TestIssuanceRouter(t *testing.T) {
 			{
 				name: "when issuer is empty",
 				request: router.CreateIssuanceTemplateRequest{
-					IssuanceTemplate: issuing.IssuanceTemplate{
+					Template: issuance.Template{
 						CredentialManifest: manifest.Manifest.ID,
-						Credentials: []issuing.CredentialTemplate{
+						Credentials: []issuance.CredentialTemplate{
 							{
 								ID:     "output_descriptor_1",
 								Schema: createdSchema.ID,
-								Data: issuing.ClaimTemplates{
+								Data: issuance.ClaimTemplates{
 									"foo":   "bar",
 									"hello": "$.vcsomething.something",
 								},
-								Expiry: issuing.TimeLike{
+								Expiry: issuance.TimeLike{
 									Time: &now,
 								},
 							},
@@ -244,30 +244,28 @@ func TestIssuanceRouter(t *testing.T) {
 	t.Run("Create, Get, Delete work as expected", func(t *testing.T) {
 		issuerResp, createdSchema, manifest, r := setupAllThings(t)
 
-		inputTemplate := issuing.IssuanceTemplate{
+		inputTemplate := issuance.Template{
 			CredentialManifest: manifest.Manifest.ID,
 			Issuer:             issuerResp.DID.ID,
 			IssuerKID:          issuerResp.DID.VerificationMethod[0].ID,
-			Credentials: []issuing.CredentialTemplate{
+			Credentials: []issuance.CredentialTemplate{
 				{
 					ID:     "output_descriptor_1",
 					Schema: createdSchema.Schema.ID,
-					Data: issuing.ClaimTemplates{
+					Data: issuance.ClaimTemplates{
 						"foo":   "bar",
 						"hello": "$.vcsomething.something",
 					},
-					Expiry: issuing.TimeLike{
+					Expiry: issuance.TimeLike{
 						Time: &now,
 					},
 				},
 			},
 		}
-		var issuanceTemplate issuing.IssuanceTemplate
+		var issuanceTemplate issuance.Template
 
 		{
-			request := router.CreateIssuanceTemplateRequest{
-				IssuanceTemplate: inputTemplate,
-			}
+			request := router.CreateIssuanceTemplateRequest{Template: inputTemplate}
 			value := newRequestValue(t, request)
 			req := httptest.NewRequest(http.MethodPut, "https://ssi-service.com/v1/issuancetemplates", value)
 			w := httptest.NewRecorder()
@@ -277,7 +275,7 @@ func TestIssuanceRouter(t *testing.T) {
 			assert.NoError(t, err)
 
 			assert.NoError(t, json.NewDecoder(w.Body).Decode(&issuanceTemplate))
-			if diff := cmp.Diff(inputTemplate, issuanceTemplate, cmpopts.IgnoreFields(issuing.IssuanceTemplate{}, "ID")); diff != "" {
+			if diff := cmp.Diff(inputTemplate, issuanceTemplate, cmpopts.IgnoreFields(issuance.Template{}, "ID")); diff != "" {
 				t.Errorf("IssuanceTemplate mismatch (-want +got):\n%s", diff)
 			}
 		}
@@ -291,7 +289,7 @@ func TestIssuanceRouter(t *testing.T) {
 			err := r.GetIssuanceTemplate(c)
 			assert.NoError(t, err)
 
-			var getIssuanceTemplate issuing.IssuanceTemplate
+			var getIssuanceTemplate issuance.Template
 			assert.NoError(t, json.NewDecoder(w.Body).Decode(&getIssuanceTemplate))
 			if diff := cmp.Diff(issuanceTemplate, getIssuanceTemplate); diff != "" {
 				t.Errorf("IssuanceTemplate mismatch (-want +got):\n%s", diff)
@@ -371,19 +369,19 @@ func TestIssuanceRouter(t *testing.T) {
 func createSimpleTemplate(t *testing.T, manifest *model.CreateManifestResponse, issuerResp *did.CreateDIDResponse, createdSchema *schema.CreateSchemaResponse, now time.Time, r *router.IssuanceRouter) {
 	{
 		request := router.CreateIssuanceTemplateRequest{
-			IssuanceTemplate: issuing.IssuanceTemplate{
+			Template: issuance.Template{
 				CredentialManifest: manifest.Manifest.ID,
 				Issuer:             issuerResp.DID.ID,
 				IssuerKID:          issuerResp.DID.VerificationMethod[0].ID,
-				Credentials: []issuing.CredentialTemplate{
+				Credentials: []issuance.CredentialTemplate{
 					{
 						ID:     "output_descriptor_1",
 						Schema: createdSchema.Schema.ID,
-						Data: issuing.ClaimTemplates{
+						Data: issuance.ClaimTemplates{
 							"foo":   "bar",
 							"hello": "$.vcsomething.something",
 						},
-						Expiry: issuing.TimeLike{
+						Expiry: issuance.TimeLike{
 							Time: &now,
 						},
 					},
@@ -450,8 +448,8 @@ func setupAllThings(t *testing.T) (*did.CreateDIDResponse, *schema.CreateSchemaR
 }
 
 func testIssuanceRouter(t *testing.T, s storage.ServiceStorage) *router.IssuanceRouter {
-	serviceConfig := config.IssuingServiceConfig{BaseServiceConfig: &config.BaseServiceConfig{Name: "test-issuing"}}
-	svc, err := issuing.NewIssuingService(serviceConfig, s)
+	serviceConfig := config.IssuanceServiceConfig{BaseServiceConfig: &config.BaseServiceConfig{Name: "test-issuance"}}
+	svc, err := issuance.NewIssuanceService(serviceConfig, s)
 	require.NoError(t, err)
 
 	r, err := router.NewIssuanceRouter(svc)
diff --git a/pkg/server/server_manifest_test.go b/pkg/server/server_manifest_test.go
index a0e139f..94cd3b4 100644
--- a/pkg/server/server_manifest_test.go
+++ b/pkg/server/server_manifest_test.go
@@ -24,7 +24,7 @@ import (
 	"github.com/tbd54566975/ssi-service/pkg/server/router"
 	"github.com/tbd54566975/ssi-service/pkg/service/credential"
 	"github.com/tbd54566975/ssi-service/pkg/service/did"
-	"github.com/tbd54566975/ssi-service/pkg/service/issuing"
+	"github.com/tbd54566975/ssi-service/pkg/service/issuance"
 	manifestsvc "github.com/tbd54566975/ssi-service/pkg/service/manifest/model"
 	"github.com/tbd54566975/ssi-service/pkg/service/operation/storage"
 	"github.com/tbd54566975/ssi-service/pkg/service/schema"
@@ -1102,24 +1102,24 @@ func TestManifestAPI(t *testing.T) {
 }
 
 func getValidIssuanceTemplateRequest(m manifest.CredentialManifest, issuerDID *did.CreateDIDResponse,
-	createdSchema *schema.CreateSchemaResponse, expiry1 time.Time, expiry2 time.Duration) *issuing.CreateIssuanceTemplateRequest {
-	return &issuing.CreateIssuanceTemplateRequest{
-		IssuanceTemplate: issuing.IssuanceTemplate{
+	createdSchema *schema.CreateSchemaResponse, expiry1 time.Time, expiry2 time.Duration) *issuance.CreateIssuanceTemplateRequest {
+	return &issuance.CreateIssuanceTemplateRequest{
+		IssuanceTemplate: issuance.Template{
 			ID:                 uuid.NewString(),
 			CredentialManifest: m.ID,
 			Issuer:             issuerDID.DID.ID,
 			IssuerKID:          issuerDID.DID.VerificationMethod[0].ID,
-			Credentials: []issuing.CredentialTemplate{
+			Credentials: []issuance.CredentialTemplate{
 				{
 					ID:                        "id1",
 					Schema:                    createdSchema.ID,
 					CredentialInputDescriptor: "test-id",
-					Data: issuing.ClaimTemplates{
+					Data: issuance.ClaimTemplates{
 						"firstName": "$.credentialSubject.firstName",
 						"lastName":  "$.credentialSubject.lastName",
 						"state":     "CA",
 					},
-					Expiry: issuing.TimeLike{
+					Expiry: issuance.TimeLike{
 						Time: &expiry1,
 					},
 				},
@@ -1127,7 +1127,7 @@ func getValidIssuanceTemplateRequest(m manifest.CredentialManifest, issuerDID *d
 					ID:                        "id2",
 					Schema:                    createdSchema.ID,
 					CredentialInputDescriptor: "test-id",
-					Data: issuing.ClaimTemplates{
+					Data: issuance.ClaimTemplates{
 						"someCrazyObject": map[string]any{
 							"foo": 123,
 							"bar": false,
@@ -1136,7 +1136,7 @@ func getValidIssuanceTemplateRequest(m manifest.CredentialManifest, issuerDID *d
 							},
 						},
 					},
-					Expiry:    issuing.TimeLike{Duration: &expiry2},
+					Expiry:    issuance.TimeLike{Duration: &expiry2},
 					Revocable: true,
 				},
 			},
diff --git a/pkg/server/server_test.go b/pkg/server/server_test.go
index 47306c5..38bd161 100644
--- a/pkg/server/server_test.go
+++ b/pkg/server/server_test.go
@@ -12,7 +12,7 @@ import (
 	"github.com/TBD54566975/ssi-sdk/credential/exchange"
 	"github.com/gin-gonic/gin"
 
-	"github.com/tbd54566975/ssi-service/pkg/service/issuing"
+	"github.com/tbd54566975/ssi-service/pkg/service/issuance"
 	"github.com/tbd54566975/ssi-service/pkg/service/manifest/model"
 	"github.com/tbd54566975/ssi-service/pkg/service/webhook"
 	"github.com/tbd54566975/ssi-service/pkg/testutil"
@@ -228,12 +228,12 @@ func testKeyStoreService(t *testing.T, db storage.ServiceStorage) *keystore.Serv
 	return keystoreService
 }
 
-func testIssuanceService(t *testing.T, db storage.ServiceStorage) *issuing.Service {
-	cfg := config.IssuingServiceConfig{
+func testIssuanceService(t *testing.T, db storage.ServiceStorage) *issuance.Service {
+	cfg := config.IssuanceServiceConfig{
 		BaseServiceConfig: &config.BaseServiceConfig{Name: "test-issuance"},
 	}
 
-	s, err := issuing.NewIssuingService(cfg, db)
+	s, err := issuance.NewIssuanceService(cfg, db)
 	require.NoError(t, err)
 	require.NotEmpty(t, s)
 	return s