---
openapi: 3.1.0
components:
  schemas:
    DataEncoding:
      description: Choice of additional encoding of the data.
      type: string
      enum:
      - NONE
      - BASE64
    ErrorMessage400:
      type: object
      properties:
        error:
          type: string
          examples:
          - Bad request from the client
    ErrorMessage403:
      type: object
      properties:
        error:
          type: string
          examples:
          - Access is forbidden!
    ErrorMessage404:
      type: object
      properties:
        error:
          type: string
          examples:
          - No such worker
    ErrorMessage409:
      type: object
      properties:
        error:
          type: string
          examples:
          - Worker already exists.
    ErrorMessage500:
      type: object
      properties:
        error:
          type: string
          examples:
          - The server were unable to process the request. See server-side logs for
            more details.
    ErrorMessage503:
      type: object
      properties:
        error:
          type: string
          examples:
          - Crypto Token not available
    ListWorkersResponse:
      description: POJO representing a response listing the workers
      type: object
      properties:
        workers:
          type: array
          items:
            $ref: "#/components/schemas/Worker"
          description: Workers list. Array with worker ID/name pairs. Empty when no
            workers available
    ProcessRequest:
      description: POJO that represents a process request.
      type: object
      required:
      - data
      properties:
        data:
          type: string
          description: The input data to be processed (i.e. signed).
          examples:
          - 8sobtsfpB9Btr+Roflefznazfk6Tt2BQItpS5szCb9I=
        encoding:
          description: Additional encoding of the input data.
          type: string
          examples:
          - BASE64
          $ref: "#/components/schemas/DataEncoding"
        metaData:
          type: object
          additionalProperties:
            type: string
          description: Additional request metadata for the worker.
          examples:
          - USING_CLIENTSUPPLIED_HASH: "true"
            CLIENTSIDE_HASHDIGESTALGORITHM: SHA256
    ProcessResponse:
      description: POJO that represents a process response.
      type: object
      properties:
        data:
          type: string
          description: The resulting data (i.e the signature) in Base64 encoding
          examples:
          - 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
        requestId:
          type: string
          examples:
          - "457529920"
        archiveId:
          type: string
          examples:
          - 61f5414b202a8c4006a1f9e7486af0181f73d710
        signerCertificate:
          type: string
          examples:
          - MIIDlzCCAn+gAwIBAgIIOdPbElQbJhcwDQYJKoZIhvcNAQELBQAwTDEWMBQGA1UEAwwNRFNTIFN1YiBDQSAxMTEQMA4GA1UECwwHVGVzdGluZzETMBEGA1UECgwKU2lnblNlcnZlcjELMAkGA1UEBhMCU0UwHhcNMTYwMzAzMDgyNTA0WhcNMzYwMjI3MDgyNTA0WjBKMRQwEgYDVQQDDAtzaWduZXIwMDAwMzEQMA4GA1UECwwHVGVzdGluZzETMBEGA1UECgwKU2lnblNlcnZlcjELMAkGA1UEBhMCU0UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyFKqwwiHS2o4PO3zovqC+jGuIELnja1iAlg/hyrRp28mF6BOGVaKE6ZzbQIMmmICRz+EeqXN1W8gyCEh6T2qN3QvXTAF9mrrUI3hG4Xn/Davgsln8saRE0zt45yy47dPq5YofYJWWIdW/6qssiX+ApcPqthCQfkgraUSagS/Reqy0WT/A2lwKh147GB9+MxhheskQIPaKQasOpI7vGfzey+GnkHPsfU21irS2nC8uzv6hd0G6hNYUEmJtIh9/5WebMoMiGFq1sydTtZp7pJilfPyxrAkHXEwMUEEMcVlE/ISCoKMttnLMUT/F00cHesU4D2yNl6gcSjpMj4Q/iF+hAgMBAAGjfzB9MB0GA1UdDgQWBBQ2/WY3Ln7tdUmDrTyvtvSZwBg8YzAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFBxgQUremK3l1gOK6GaCqX6w8gKHMA4GA1UdDwEB/wQEAwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwDQYJKoZIhvcNAQELBQADggEBAIUh6kkCMc0Fs6U+Sw6Ns0Yd28Fb5SM//nE6mq3mf1SD4lAyChVrFvlqMZJaqeJlkVeHc9E+KCE5bX1r2iGC8rnE9DuItI0pKMrgFt4cbSbDwgovnTrkiIhuqP2pjdhmrHtlLqZBR8e16c4xGSn6XWKJ8vPzx2AJl7MY3sY3Z4aPckBFNjG1lzH1inq5WM/+WaLghOQQngaXeU+SWpoAM7cUjB8Uyjf2Qr2GerI4AZZJMuC6BuvMdFMyXX78l7c9qmvK9Bre+SFKdtcMAgnglLzu0lyPHPwYL0R+pwc5dFOJipafxeqeHGpkZTXMsdMn6f1USRznlGbRWru68/XOOFU=
        metaData:
          type: object
          additionalProperties:
            type: string
          examples:
          - {}
    ReloadRequest:
      description: Represents a reload request.
      type: object
      required:
      - workerIDs
      properties:
        workerIDs:
          type: array
          items:
            type: integer
            format: int32
          description: List of worker IDs to reload.
    Worker:
      type: object
      properties:
        id:
          type: integer
          format: int32
          examples:
          - 1
        name:
          type: string
          examples:
          - PlainSigner
    WorkerConfigResponse:
      description: POJO that represents a get configuration response.
      type: object
      properties:
        properties:
          type: object
          additionalProperties:
            type: string
          description: Worker properties list
    WorkerRequest:
      description: Represents a worker request.
      type: object
      properties:
        properties:
          type: object
          additionalProperties:
            type: string
          description: Worker properties list
    WorkerResponse:
      description: Represents a worker response.
      type: object
      properties:
        responseMessage:
          type: string
info:
  title: SignServer REST Interface
  version: 1.3.1
paths:
  /workers:
    get:
      summary: Request to get list of workers
      description: "Required role: admin role \n\n"
      parameters:
      - description: This protects SignServer REST endpoints from being maliciously
          invoked from administrator machines by clickjacking or CSRF methods.
        in: header
        name: X-Keyfactor-Requested-With
        required: true
        schema:
          type: object
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListWorkersResponse"
        "403":
          description: Access is forbidden!
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage403"
        "500":
          description: The server were unable to process the request. See server-side
            logs for more details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage500"
    post:
      summary: Submit data for adding a new worker from multiple properties
      description: "Required role: admin role \n\nSubmit a worker ID and a list of\
        \ worker properties to add a new worker."
      parameters:
      - description: This protects SignServer REST endpoints from being maliciously
          invoked from administrator machines by clickjacking or CSRF methods.
        in: header
        name: X-Keyfactor-Requested-With
        required: true
      requestBody:
        description: The request
        content:
          application/json:
            examples:
              PlainSigner:
                value:
                  properties:
                    CRYPTOTOKEN: CryptoTokenP12
                    AUTHTYPE: NOAUTH
                    IMPLEMENTATION_CLASS: org.signserver.module.cmssigner.PlainSigner
                    DEFAULTKEY: signer00003
                    TYPE: PROCESSABLE
                    DISABLEKEYUSAGECOUNTER: "true"
                    NAME: PlainSigner
              CryptoTokenP12:
                value:
                  properties:
                    KEYSTOREPATH: /opt/signserver/res/test/dss10/dss10_keystore.p12
                    IMPLEMENTATION_CLASS: org.signserver.server.signers.CryptoWorker
                    KEYSTORETYPE: PKCS12
                    KEYSTOREPASSWORD: foo123
                    TYPE: CRYPTO_WORKER
                    CRYPTOTOKEN_IMPLEMENTATION_CLASS: org.signserver.server.cryptotokens.KeystoreCryptoToken
                    NAME: CryptoTokenP12
            schema:
              $ref: "#/components/schemas/WorkerRequest"
        required: true
      responses:
        "201":
          description: ""
        "400":
          description: Bad request from the client
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage400"
        "403":
          description: Access is forbidden!
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage403"
        "409":
          description: Worker already exists.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage409"
        "500":
          description: The server were unable to process the request. See server-side
            logs for more details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage500"
  /workers/reload:
    post:
      parameters:
      - description: This protects SignServer REST endpoints from being maliciously
          invoked from administrator machines by clickjacking or CSRF methods.
        in: header
        name: X-Keyfactor-Requested-With
        required: true
        schema:
          type: object
      responses:
        "200":
          description: Workers successfully reloaded
          content:
            application/json: {}
        "403":
          description: Access is forbidden!
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage403"
        "500":
          description: The server were unable to process the request. See server-side
            logs for more details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage500"
        "400":
          description: Bad request from the client
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage400"
        "404":
          description: No such worker
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage404"
      summary: Reload workers
      description: "Required role: admin role \n\nSubmit a list of worker IDs to reload\
        \ configurations from the database. The request without body reloads all the\
        \ workers."
      requestBody:
        description: The request
        content:
          application/json:
            examples:
              Reload one worker:
                value:
                  workerIDs:
                  - 1
              Reload several workers:
                value:
                  workerIDs:
                  - 1
                  - 2
            schema:
              $ref: "#/components/schemas/WorkerRequest"
        required: true
  /workers/{idOrName}/process:
    post:
      summary: Submit data for processing
      description: "Required role: set by AUTHTYPE in worker \n\nSubmit data/document/file\
        \ for processing such as for instance signing and get back the result (i.e.\
        \ signature)."
      parameters:
      - description: Worker Id or name of the worker
        example: ExampleSigner1
        name: idOrName
        in: path
        required: true
        schema:
          type: string
      - description: This protects SignServer REST endpoints from being maliciously
          invoked from administrator machines by clickjacking or CSRF methods.
        in: header
        name: X-Keyfactor-Requested-With
        required: true
      requestBody:
        description: The request
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProcessRequest"
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  format: binary
                  type: string
      responses:
        "400":
          description: Bad request from the client
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage400"
        "403":
          description: Access is forbidden!
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage403"
        "404":
          description: No such worker
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage404"
        "500":
          description: The server were unable to process the request. See server-side
            logs for more details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage500"
        "503":
          description: Crypto Token not available
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage503"
        "200":
          description: The response data
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProcessResponse"
            application/octet-stream: {}
  /workers/{id}:
    patch:
      summary: Submit data for update and delete worker properties
      description: "Required role: admin role \n\nSubmit a worker ID and a list of\
        \ worker properties to update or delete."
      parameters:
      - description: Worker id
        example: 1
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - description: This protects SignServer REST endpoints from being maliciously
          invoked from administrator machines by clickjacking or CSRF methods.
        in: header
        name: X-Keyfactor-Requested-With
        required: true
      requestBody:
        description: The request
        content:
          application/json:
            examples:
              Change existing property name:
                value:
                  properties:
                    NAME: NewPlainSigner
              Add new properties for clientside hashing:
                value:
                  properties:
                    CLIENTSIDEHASHING: "true"
                    ACCEPTED_HASH_DIGEST_ALGORITHMS: "SHA-256,SHA-384,SHA-512"
            schema:
              $ref: "#/components/schemas/WorkerRequest"
        required: true
      responses:
        "200":
          description: Worker properties successfully updated
          content:
            application/json: {}
        "400":
          description: Bad request from the client
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage400"
        "403":
          description: Access is forbidden!
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage403"
        "500":
          description: The server were unable to process the request. See server-side
            logs for more details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage500"
    put:
      summary: Submit data for replace worker properties with the new properties
      description: "Required role: admin role \n\nSubmit a worker ID and a list of\
        \ worker properties to replace with current worker properties."
      parameters:
      - description: Worker id
        example: 1
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - description: This protects SignServer REST endpoints from being maliciously
          invoked from administrator machines by clickjacking or CSRF methods.
        in: header
        name: X-Keyfactor-Requested-With
        required: true
      requestBody:
        description: The request
        content:
          application/json:
            examples:
              PlainSigner:
                value:
                  properties:
                    CRYPTOTOKEN: CryptoTokenP12
                    AUTHTYPE: NOAUTH
                    IMPLEMENTATION_CLASS: org.signserver.module.cmssigner.PlainSigner
                    DEFAULTKEY: signer00003
                    TYPE: PROCESSABLE
                    DISABLEKEYUSAGECOUNTER: "true"
                    NAME: PlainSigner
              CryptoTokenP12:
                value:
                  properties:
                    KEYSTOREPATH: /opt/signserver/res/test/dss10/dss10_keystore.p12
                    IMPLEMENTATION_CLASS: org.signserver.server.signers.CryptoWorker
                    KEYSTORETYPE: PKCS12
                    KEYSTOREPASSWORD: foo123
                    TYPE: CRYPTO_WORKER
                    CRYPTOTOKEN_IMPLEMENTATION_CLASS: org.signserver.server.cryptotokens.KeystoreCryptoToken
                    NAME: CryptoTokenP12
            schema:
              $ref: "#/components/schemas/WorkerRequest"
        required: true
      responses:
        "200":
          description: Worker properties successfully replaced
          content:
            application/json: {}
        "400":
          description: Bad request from the client
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage400"
        "403":
          description: Access is forbidden!
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage403"
        "404":
          description: No such worker
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage404"
        "500":
          description: The server were unable to process the request. See server-side
            logs for more details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage500"
    delete:
      summary: Removing worker
      description: "Required role: admin role \n\nRemoving worker by ID."
      parameters:
      - description: Worker id
        example: 1
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - description: This protects SignServer REST endpoints from being maliciously
          invoked from administrator machines by clickjacking or CSRF methods.
        in: header
        name: X-Keyfactor-Requested-With
        required: true
      responses:
        "200":
          description: Worker removed successfully
          content:
            application/json: {}
        "400":
          description: Bad request from the client
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage400"
        "404":
          description: No such worker
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage404"
        "403":
          description: Access is forbidden!
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage403"
        "500":
          description: The server were unable to process the request. See server-side
            logs for more details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage500"
    get:
      summary: Request to get worker configuration
      description: "Required role: admin role \n\n"
      parameters:
      - description: Worker id
        example: 1
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - description: This protects SignServer REST endpoints from being maliciously
          invoked from administrator machines by clickjacking or CSRF methods.
        in: header
        name: X-Keyfactor-Requested-With
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              example:
                properties:
                  CRYPTOTOKEN: CryptoTokenP12
                  AUTHTYPE: NOAUTH
                  IMPLEMENTATION_CLASS: org.signserver.module.cmssigner.PlainSigner
                  DEFAULTKEY: signer00003
                  TYPE: PROCESSABLE
                  DISABLEKEYUSAGECOUNTER: "true"
                  NAME: PlainSigner
              schema:
                $ref: "#/components/schemas/WorkerConfigResponse"
        "403":
          description: Access is forbidden!
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage403"
        "404":
          description: No such worker
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage404"
        "500":
          description: The server were unable to process the request. See server-side
            logs for more details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage500"
    post:
      summary: Submit data for adding a new worker from multiple properties
      description: "Required role: admin role \n\nSubmit a worker ID and a list of\
        \ worker properties to add a new worker."
      parameters:
      - description: Worker id
        example: 1
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - description: This protects SignServer REST endpoints from being maliciously
          invoked from administrator machines by clickjacking or CSRF methods.
        in: header
        name: X-Keyfactor-Requested-With
        required: true
      requestBody:
        description: The request
        content:
          application/json:
            examples:
              PlainSigner:
                value:
                  properties:
                    CRYPTOTOKEN: CryptoTokenP12
                    AUTHTYPE: NOAUTH
                    IMPLEMENTATION_CLASS: org.signserver.module.cmssigner.PlainSigner
                    DEFAULTKEY: signer00003
                    TYPE: PROCESSABLE
                    DISABLEKEYUSAGECOUNTER: "true"
                    NAME: PlainSigner
              CryptoTokenP12:
                value:
                  properties:
                    KEYSTOREPATH: /opt/signserver/res/test/dss10/dss10_keystore.p12
                    IMPLEMENTATION_CLASS: org.signserver.server.signers.CryptoWorker
                    KEYSTORETYPE: PKCS12
                    KEYSTOREPASSWORD: foo123
                    TYPE: CRYPTO_WORKER
                    CRYPTOTOKEN_IMPLEMENTATION_CLASS: org.signserver.server.cryptotokens.KeystoreCryptoToken
                    NAME: CryptoTokenP12
            schema:
              $ref: "#/components/schemas/WorkerRequest"
        required: true
      responses:
        "201":
          description: ""
        "400":
          description: Bad request from the client
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage400"
        "403":
          description: Access is forbidden!
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage403"
        "409":
          description: Worker already exists.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage409"
        "500":
          description: The server were unable to process the request. See server-side
            logs for more details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorMessage500"
servers:
- url: /signserver/rest/v1
