Files
cybercore-signer/docs/ccsp-v1.schema.json

418 lines
14 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://cybercore.com.br/schemas/ccsp-v1.json",
"title": "CyberCore Signing Protocol v1 (CCSP/1) Specification",
"description": "Especificação formal do protocolo JSON para comunicação local entre aplicações web e o agente desktop CyberCore Signer.",
"type": "object",
"properties": {
"version": {
"type": "string",
"enum": ["1"],
"description": "Versão do protocolo CCSP (sempre '1' para CCSP/1)."
}
},
"definitions": {
"ErrorCode": {
"type": "string",
"enum": [
"CERTIFICATE_NOT_FOUND",
"CERTIFICATE_EXPIRED",
"CERTIFICATE_INVALID",
"PRIVATE_KEY_NOT_AVAILABLE",
"TOKEN_NOT_FOUND",
"TOKEN_REMOVED",
"PIN_REQUIRED",
"PIN_INCORRECT",
"PKCS11_ERROR",
"SIGNATURE_FAILED",
"APPLICATION_NOT_AUTHORIZED",
"REQUEST_EXPIRED",
"REPLAY_DETECTED",
"INVALID_ORIGIN",
"INVALID_HOST",
"UNSUPPORTED_ALGORITHM",
"USER_CANCELLED",
"PROVIDER_NOT_AVAILABLE",
"COMMUNICATION_ERROR",
"AGENT_NOT_RUNNING",
"TIMEOUT_ERROR",
"BAD_REQUEST",
"METHOD_NOT_ALLOWED"
],
"description": "Códigos formais de erro estruturados do protocolo CCSP/1."
},
"ErrorResponse": {
"type": "object",
"required": ["version", "status", "error_code", "message"],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"status": { "type": "string", "enum": ["error"] },
"error_code": { "$ref": "#/definitions/ErrorCode" },
"message": { "type": "string" },
"request_id": { "type": ["string", "null"] }
},
"additionalProperties": true
},
"StatusResponse": {
"type": "object",
"required": ["version", "status", "agent", "agent_version", "os", "timestamp"],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"status": { "type": "string", "enum": ["ready", "busy", "error"] },
"agent": { "type": "string" },
"agent_version": { "type": "string" },
"os": { "type": "string" },
"timestamp": { "type": "string" }
},
"additionalProperties": true
},
"AuthorizeRequest": {
"type": "object",
"required": ["version", "application_id"],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"application_id": { "type": "string", "pattern": "^[0-9a-fA-F-]{36}$" },
"name": { "type": "string" }
},
"additionalProperties": true
},
"AuthorizeResponse": {
"type": "object",
"required": ["version", "status", "application_id"],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"status": { "type": "string", "enum": ["authorized"] },
"application_id": { "type": "string" },
"message": { "type": "string" }
},
"additionalProperties": true
},
"CertificateItem": {
"type": "object",
"required": ["id", "alias", "type", "can_sign", "status"],
"properties": {
"id": { "type": "string" },
"alias": { "type": "string" },
"common_name": { "type": ["string", "null"] },
"subject_dn": { "type": ["string", "null"] },
"issuer_dn": { "type": ["string", "null"] },
"type": { "type": "string", "enum": ["A1", "A3"] },
"provider_id": { "type": ["string", "null"] },
"device_name": { "type": ["string", "null"] },
"valid_from": { "type": ["string", "null"] },
"valid_to": { "type": ["string", "null"] },
"serial_number": { "type": ["string", "null"] },
"cpf": { "type": ["string", "null"] },
"cnpj": { "type": ["string", "null"] },
"can_sign": { "type": "boolean" },
"status": { "type": "string" }
},
"additionalProperties": true
},
"CertificatesResponse": {
"type": "object",
"required": ["version", "status", "certificates"],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"status": { "type": "string", "enum": ["success"] },
"certificates": {
"type": "array",
"items": { "$ref": "#/definitions/CertificateItem" }
}
},
"additionalProperties": true
},
"SealThemeItem": {
"type": "object",
"required": ["id", "name"],
"properties": {
"id": { "type": "string" },
"name": { "type": "string" },
"description": { "type": ["string", "null"] },
"width": { "type": "number" },
"height": { "type": "number" },
"primary_color": { "type": ["string", "null"] },
"secondary_color": { "type": ["string", "null"] },
"background_color": { "type": ["string", "null"] },
"border_color": { "type": ["string", "null"] },
"text_color": { "type": ["string", "null"] },
"icon_style": { "type": ["string", "null"] },
"custom": { "type": "boolean" }
},
"additionalProperties": true
},
"SealsResponse": {
"type": "object",
"required": ["version", "status", "seals"],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"status": { "type": "string", "enum": ["success"] },
"default_seal_id": { "type": ["string", "null"] },
"seals": {
"type": "array",
"items": { "$ref": "#/definitions/SealThemeItem" }
},
"themes": {
"type": "array",
"items": { "$ref": "#/definitions/SealThemeItem" }
}
},
"additionalProperties": true
},
"SignRequest": {
"type": "object",
"required": [
"version",
"request_id",
"application_id",
"operation",
"algorithm",
"digest",
"nonce",
"expires_at"
],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"request_id": { "type": "string" },
"application_id": { "type": "string" },
"operation": { "type": "string", "enum": ["sign", "authenticate"] },
"algorithm": { "type": "string" },
"digest": { "type": "string", "description": "Digest SHA-256 em Base64" },
"certificate_hint": { "type": ["string", "null"] },
"document_name": { "type": ["string", "null"] },
"document_type": { "type": ["string", "null"] },
"purpose": { "type": ["string", "null"] },
"challenge": { "type": ["string", "null"] },
"nonce": { "type": "string" },
"expires_at": { "type": "string" }
},
"additionalProperties": true
},
"SignResponse": {
"type": "object",
"required": [
"version",
"request_id",
"status",
"signature",
"certificate",
"algorithm"
],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"request_id": { "type": "string" },
"status": { "type": "string", "enum": ["signed", "authenticated"] },
"signature": { "type": "string", "description": "Assinatura digital em Base64" },
"certificate": { "type": "string", "description": "Certificado X.509 do signatário em Base64" },
"certificate_chain": {
"type": "array",
"items": { "type": "string" }
},
"algorithm": { "type": "string" },
"sha256": { "type": ["string", "null"] },
"subject_name": { "type": ["string", "null"] },
"subject_cpf_cnpj": { "type": ["string", "null"] },
"document_name": { "type": ["string", "null"] },
"document_type": { "type": ["string", "null"] },
"challenge": { "type": ["string", "null"] }
},
"additionalProperties": true
},
"SignPdfRequest": {
"type": "object",
"required": [
"version",
"request_id",
"application_id",
"operation",
"pdf",
"nonce",
"expires_at"
],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"request_id": { "type": "string" },
"application_id": { "type": "string" },
"operation": { "type": "string", "enum": ["sign_pdf"] },
"pdf": { "type": "string", "description": "Documento PDF completo codificado em Base64" },
"certificate_hint": { "type": ["string", "null"] },
"document_name": { "type": ["string", "null"] },
"page": { "type": ["integer", "null"] },
"page_choice": { "type": ["string", "null"] },
"position": { "type": ["string", "null"] },
"x": { "type": ["number", "null"] },
"y": { "type": ["number", "null"] },
"scale": { "type": ["number", "null"] },
"visible_seal": { "type": ["boolean", "null"] },
"seal_theme_id": { "type": ["string", "null"] },
"seal_custom": { "type": ["object", "null"] },
"reason": { "type": ["string", "null"] },
"location": { "type": ["string", "null"] },
"cpf_display_mode": { "type": ["string", "null"] },
"include_date_time": { "type": ["boolean", "null"] },
"custom_extra_info": { "type": ["string", "null"] },
"nonce": { "type": "string" },
"expires_at": { "type": "string" }
},
"additionalProperties": true
},
"SignPdfResponse": {
"type": "object",
"required": [
"version",
"request_id",
"status",
"signed_pdf",
"signature",
"certificate",
"algorithm"
],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"request_id": { "type": "string" },
"status": { "type": "string", "enum": ["signed"] },
"signed_pdf": { "type": "string", "description": "PDF assinado completo com envelope PAdES em Base64" },
"sha256": { "type": ["string", "null"] },
"signature": { "type": "string" },
"certificate": { "type": "string" },
"certificate_chain": {
"type": "array",
"items": { "type": "string" }
},
"algorithm": { "type": "string" },
"subject_name": { "type": ["string", "null"] },
"subject_cpf_cnpj": { "type": ["string", "null"] },
"document_name": { "type": ["string", "null"] }
},
"additionalProperties": true
},
"SignXmlRequest": {
"type": "object",
"required": [
"version",
"request_id",
"application_id",
"operation",
"nonce",
"expires_at"
],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"request_id": { "type": "string" },
"application_id": { "type": "string" },
"operation": { "type": "string", "enum": ["sign_xml"] },
"xml": { "type": ["string", "null"], "description": "XML em texto puro UTF-8" },
"xml_base64": { "type": ["string", "null"], "description": "XML codificado em Base64" },
"certificate_hint": { "type": ["string", "null"] },
"document_name": { "type": ["string", "null"] },
"profile": { "type": ["string", "null"], "enum": ["XADES_BES", "XMLDSIG", null] },
"target_element_tag": { "type": ["string", "null"] },
"target_element_id": { "type": ["string", "null"] },
"algorithm": { "type": ["string", "null"] },
"nonce": { "type": "string" },
"expires_at": { "type": "string" }
},
"additionalProperties": true
},
"SignXmlResponse": {
"type": "object",
"required": [
"version",
"request_id",
"status",
"signed_xml",
"signature",
"certificate",
"algorithm"
],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"request_id": { "type": "string" },
"status": { "type": "string", "enum": ["signed"] },
"signed_xml": { "type": "string", "description": "Documento XML assinado completo com assinatura enveloped" },
"sha256": { "type": ["string", "null"] },
"signature": { "type": "string" },
"certificate": { "type": "string" },
"certificate_chain": {
"type": "array",
"items": { "type": "string" }
},
"algorithm": { "type": "string" },
"subject_name": { "type": ["string", "null"] },
"subject_cpf_cnpj": { "type": ["string", "null"] },
"document_name": { "type": ["string", "null"] }
},
"additionalProperties": true
},
"AuthenticateRequest": {
"type": "object",
"required": [
"version",
"request_id",
"application_id",
"operation",
"challenge",
"nonce",
"expires_at"
],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"request_id": { "type": "string" },
"application_id": { "type": "string" },
"operation": { "type": "string", "enum": ["authenticate"] },
"algorithm": { "type": "string" },
"digest": { "type": ["string", "null"] },
"challenge": { "type": "string" },
"purpose": { "type": ["string", "null"] },
"document_type": { "type": ["string", "null"] },
"certificate_hint": { "type": ["string", "null"] },
"nonce": { "type": "string" },
"expires_at": { "type": "string" }
},
"additionalProperties": true
},
"AuthenticateResponse": {
"type": "object",
"required": [
"version",
"request_id",
"status",
"signature",
"certificate",
"algorithm"
],
"properties": {
"version": { "type": "string", "enum": ["1"] },
"request_id": { "type": "string" },
"status": { "type": "string", "enum": ["authenticated", "signed"] },
"signature": { "type": "string" },
"certificate": { "type": "string" },
"certificate_chain": {
"type": "array",
"items": { "type": "string" }
},
"algorithm": { "type": "string" },
"subject_name": { "type": ["string", "null"] },
"subject_cpf_cnpj": { "type": ["string", "null"] }
},
"additionalProperties": true
}
}
}