diff --git a/.fern/metadata.json b/.fern/metadata.json index 4600f4b1..d0174aaa 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -5,9 +5,9 @@ "generatorConfig": { "moduleName": "CloudPDF" }, - "originGitCommit": "07aa3f26c82243b36a5ec94f7072130c7298d977", + "originGitCommit": "3a88df90980e5c0546a5ebbfd1252d8fca77ff9b", "originGitCommitIsDirty": false, "invokedBy": "ci", - "requestedVersion": "3.0.0.alpha.17", + "requestedVersion": "3.0.0.alpha.18", "ciProvider": "github" } \ No newline at end of file diff --git a/cloudpdf-generation.json b/cloudpdf-generation.json index 977cc7df..a2941d04 100644 --- a/cloudpdf-generation.json +++ b/cloudpdf-generation.json @@ -1,12 +1,12 @@ { "language": "ruby", - "canonicalVersion": "3.0.0-next.17", - "sdkVersion": "3.0.0.alpha.17", + "canonicalVersion": "3.0.0-next.18", + "sdkVersion": "3.0.0.alpha.18", "source": { "repository": "embedpdf/embed-pdf-viewer", "openapi": "cloudpdf/contract/openapi.json", - "openapiSha256": "8fa53cef2776eb0de9ec50c263aa547b309a04d1a2ecb6ee54b6338d6698dc00", - "gitCommit": "07aa3f26c82243b36a5ec94f7072130c7298d977", + "openapiSha256": "ad2a3baa628061e7b3e8b597cfd15bcda7f103d0f829cb01388a0fed6c4f5873", + "gitCommit": "3a88df90980e5c0546a5ebbfd1252d8fca77ff9b", "gitCommitIsDirty": false }, "fern": { diff --git a/lib/CloudPDF/client.rb b/lib/CloudPDF/client.rb index 27e8b531..78935e15 100644 --- a/lib/CloudPDF/client.rb +++ b/lib/CloudPDF/client.rb @@ -43,6 +43,11 @@ def documents @documents ||= CloudPDF::Documents::Client.new(client: @raw_client) end + # @return [CloudPDF::Folders::Client] + def folders + @folders ||= CloudPDF::Folders::Client.new(client: @raw_client) + end + # @return [CloudPDF::Tokens::Client] def tokens @tokens ||= CloudPDF::Tokens::Client.new(client: @raw_client) diff --git a/lib/CloudPDF/doc/signatures/client.rb b/lib/CloudPDF/doc/signatures/client.rb index 407b211b..578103de 100644 --- a/lib/CloudPDF/doc/signatures/client.rb +++ b/lib/CloudPDF/doc/signatures/client.rb @@ -105,8 +105,9 @@ def cancel(request_options: {}, **params) end # `cms` is the detached CMS over the prepared digest, base64. `expectedVersion` must be what prepare returned. - # Idempotent by signing id: the same CMS again answers `already-completed`. Every layer of the document then - # sits over the new version; refetch the manifest after a completion. + # Idempotent by signing id: the same CMS again answers `already-completed`. The new version is the layer's own: + # only this layer moves to it, and the document and every other layer stay as they were. Refetch the manifest + # after a completion. # # @param request_options [Hash] # @param params [CloudPDF::Doc::Signatures::Types::DocSignaturesCompleteRequest] @@ -224,8 +225,8 @@ def analysis(request_options: {}, **params) # Multipart: a JSON `body` part (field, subFilter, digest, contentsSize, signer, certify, lock), naming the # appearance PDF it may carry as `resources: { appearance: '' }`, and that PDF as the part # `resource:`. A certification (`certify.permission`) additionally requires `doc.sign.certify`. The layer - # is read-only until the signing completes, is cancelled, or expires (15 minutes). A layer behind the document - # head cannot sign (StaleBase). + # is read-only until the signing completes, is cancelled, or expires (15 minutes). The signature is made over + # the layer's own base: the upload, or the version its last signature made. # # @param request_options [Hash] # @param params [void] diff --git a/lib/CloudPDF/doc/versions/client.rb b/lib/CloudPDF/doc/versions/client.rb index e86daed7..ef716104 100644 --- a/lib/CloudPDF/doc/versions/client.rb +++ b/lib/CloudPDF/doc/versions/client.rb @@ -11,7 +11,8 @@ def initialize(client:) @client = client end - # Every completed signature publishes a new version. Never cached: the list grows. + # Every completed signature makes a new version of its layer; another layer's versions are never listed. Never + # cached: the list grows. # # @param request_options [Hash] # @param params [Hash] @@ -21,10 +22,14 @@ def initialize(client:) # @option request_options [Hash{String => Object}] :additional_body_parameters # @option request_options [Integer] :timeout_in_seconds # @option params [String] :doc_id + # @option params [String] :layer_name # @option params [String, nil] :document_password # # @example - # client.doc.versions.list(doc_id: "docId") + # client.doc.versions.list( + # doc_id: "docId", + # layer_name: "layerName" + # ) # # @return [CloudPDF::Types::DocVersionsList200Response] def list(request_options: {}, **params) @@ -35,7 +40,7 @@ def list(request_options: {}, **params) request = CloudPDF::Internal::JSON::Request.new( base_url: request_options[:base_url], method: "GET", - path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/versions", + path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/layers/#{URI.encode_uri_component(params[:layer_name].to_s)}/versions", headers: headers, request_options: request_options ) @@ -54,7 +59,7 @@ def list(request_options: {}, **params) end # Exactly one of `since.signature` / `since.revision`; `until=` defaults to the last. The same answer - # for every layer and every caller. + # for every caller. # # @param request_options [Hash] # @param params [Hash] @@ -64,6 +69,7 @@ def list(request_options: {}, **params) # @option request_options [Hash{String => Object}] :additional_body_parameters # @option request_options [Integer] :timeout_in_seconds # @option params [String] :doc_id + # @option params [String] :layer_name # @option params [String] :sha # @option params [Integer, nil] :since_signature # @option params [Integer, nil] :since_revision @@ -75,6 +81,7 @@ def list(request_options: {}, **params) # @example # client.doc.versions.analysis( # doc_id: "docId", + # layer_name: "layerName", # sha: "sha" # ) # @@ -94,7 +101,7 @@ def analysis(request_options: {}, **params) request = CloudPDF::Internal::JSON::Request.new( base_url: request_options[:base_url], method: "GET", - path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/versions/analysis/#{URI.encode_uri_component(params[:sha].to_s)}", + path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/layers/#{URI.encode_uri_component(params[:layer_name].to_s)}/versions/analysis/#{URI.encode_uri_component(params[:sha].to_s)}", headers: headers, query: query_params, request_options: request_options @@ -121,12 +128,14 @@ def analysis(request_options: {}, **params) # @option request_options [Hash{String => Object}] :additional_body_parameters # @option request_options [Integer] :timeout_in_seconds # @option params [String] :doc_id + # @option params [String] :layer_name # @option params [String] :sha # @option params [String, nil] :document_password # # @example # client.doc.versions.download( # doc_id: "docId", + # layer_name: "layerName", # sha: "sha" # ) # @@ -139,7 +148,7 @@ def download(request_options: {}, **params) request = CloudPDF::Internal::JSON::Request.new( base_url: request_options[:base_url], method: "GET", - path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/versions/download/#{URI.encode_uri_component(params[:sha].to_s)}", + path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/layers/#{URI.encode_uri_component(params[:layer_name].to_s)}/versions/download/#{URI.encode_uri_component(params[:sha].to_s)}", headers: headers, request_options: request_options ) @@ -163,6 +172,7 @@ def download(request_options: {}, **params) # @option request_options [Hash{String => Object}] :additional_body_parameters # @option request_options [Integer] :timeout_in_seconds # @option params [String] :doc_id + # @option params [String] :layer_name # @option params [String] :sha # @option params [Integer] :index # @option params [String, nil] :document_password @@ -170,6 +180,7 @@ def download(request_options: {}, **params) # @example # client.doc.versions.revision( # doc_id: "docId", + # layer_name: "layerName", # sha: "sha", # index: 1 # ) @@ -183,7 +194,7 @@ def revision(request_options: {}, **params) request = CloudPDF::Internal::JSON::Request.new( base_url: request_options[:base_url], method: "GET", - path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/versions/revisions/#{URI.encode_uri_component(params[:sha].to_s)}/#{URI.encode_uri_component(params[:index].to_s)}", + path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/layers/#{URI.encode_uri_component(params[:layer_name].to_s)}/versions/revisions/#{URI.encode_uri_component(params[:sha].to_s)}/#{URI.encode_uri_component(params[:index].to_s)}", headers: headers, request_options: request_options ) @@ -207,12 +218,14 @@ def revision(request_options: {}, **params) # @option request_options [Hash{String => Object}] :additional_body_parameters # @option request_options [Integer] :timeout_in_seconds # @option params [String] :doc_id + # @option params [String] :layer_name # @option params [String] :sha # @option params [String, nil] :document_password # # @example # client.doc.versions.signatures( # doc_id: "docId", + # layer_name: "layerName", # sha: "sha" # ) # @@ -225,7 +238,7 @@ def signatures(request_options: {}, **params) request = CloudPDF::Internal::JSON::Request.new( base_url: request_options[:base_url], method: "GET", - path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/versions/signatures/#{URI.encode_uri_component(params[:sha].to_s)}", + path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/layers/#{URI.encode_uri_component(params[:layer_name].to_s)}/versions/signatures/#{URI.encode_uri_component(params[:sha].to_s)}", headers: headers, request_options: request_options ) @@ -253,6 +266,7 @@ def signatures(request_options: {}, **params) # @option request_options [Hash{String => Object}] :additional_body_parameters # @option request_options [Integer] :timeout_in_seconds # @option params [String] :doc_id + # @option params [String] :layer_name # @option params [String] :sha # @option params [String] :field_key # @option params [String, nil] :document_password @@ -260,6 +274,7 @@ def signatures(request_options: {}, **params) # @example # client.doc.versions.signature_contents( # doc_id: "docId", + # layer_name: "layerName", # sha: "sha", # field_key: "fieldKey" # ) @@ -273,7 +288,7 @@ def signature_contents(request_options: {}, **params) request = CloudPDF::Internal::JSON::Request.new( base_url: request_options[:base_url], method: "GET", - path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/versions/signatures/#{URI.encode_uri_component(params[:sha].to_s)}/#{URI.encode_uri_component(params[:field_key].to_s)}/contents", + path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/layers/#{URI.encode_uri_component(params[:layer_name].to_s)}/versions/signatures/#{URI.encode_uri_component(params[:sha].to_s)}/#{URI.encode_uri_component(params[:field_key].to_s)}/contents", headers: headers, request_options: request_options ) @@ -299,6 +314,7 @@ def signature_contents(request_options: {}, **params) # @option request_options [Hash{String => Object}] :additional_body_parameters # @option request_options [Integer] :timeout_in_seconds # @option params [String] :doc_id + # @option params [String] :layer_name # @option params [String] :sha # @option params [String] :field_key # @option params [CloudPDF::Doc::Versions::Types::SignatureDigestVersionsRequestAlgorithm] :algorithm @@ -307,6 +323,7 @@ def signature_contents(request_options: {}, **params) # @example # client.doc.versions.signature_digest( # doc_id: "docId", + # layer_name: "layerName", # sha: "sha", # field_key: "fieldKey", # algorithm: "sha1" @@ -321,7 +338,7 @@ def signature_digest(request_options: {}, **params) request = CloudPDF::Internal::JSON::Request.new( base_url: request_options[:base_url], method: "GET", - path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/versions/signatures/#{URI.encode_uri_component(params[:sha].to_s)}/#{URI.encode_uri_component(params[:field_key].to_s)}/digest/#{URI.encode_uri_component(params[:algorithm].to_s)}", + path: "v1/docs/#{URI.encode_uri_component(params[:doc_id].to_s)}/layers/#{URI.encode_uri_component(params[:layer_name].to_s)}/versions/signatures/#{URI.encode_uri_component(params[:sha].to_s)}/#{URI.encode_uri_component(params[:field_key].to_s)}/digest/#{URI.encode_uri_component(params[:algorithm].to_s)}", headers: headers, request_options: request_options ) diff --git a/lib/CloudPDF/doc/versions/types/analysis_versions_request.rb b/lib/CloudPDF/doc/versions/types/analysis_versions_request.rb index b4c8950c..e5cdb355 100644 --- a/lib/CloudPDF/doc/versions/types/analysis_versions_request.rb +++ b/lib/CloudPDF/doc/versions/types/analysis_versions_request.rb @@ -7,6 +7,8 @@ module Types class AnalysisVersionsRequest < Internal::Types::Model field :doc_id, -> { String }, optional: false, nullable: false, api_name: "docId" + field :layer_name, -> { String }, optional: false, nullable: false, api_name: "layerName" + field :sha, -> { String }, optional: false, nullable: false field :since_signature, -> { Integer }, optional: true, nullable: false, api_name: "since.signature" diff --git a/lib/CloudPDF/doc/versions/types/download_versions_request.rb b/lib/CloudPDF/doc/versions/types/download_versions_request.rb index 9ee0ce33..804c7070 100644 --- a/lib/CloudPDF/doc/versions/types/download_versions_request.rb +++ b/lib/CloudPDF/doc/versions/types/download_versions_request.rb @@ -7,6 +7,8 @@ module Types class DownloadVersionsRequest < Internal::Types::Model field :doc_id, -> { String }, optional: false, nullable: false, api_name: "docId" + field :layer_name, -> { String }, optional: false, nullable: false, api_name: "layerName" + field :sha, -> { String }, optional: false, nullable: false field :document_password, -> { String }, optional: true, nullable: false, api_name: "X-Document-Password" diff --git a/lib/CloudPDF/doc/versions/types/list_versions_request.rb b/lib/CloudPDF/doc/versions/types/list_versions_request.rb index a63ec351..ee1265ef 100644 --- a/lib/CloudPDF/doc/versions/types/list_versions_request.rb +++ b/lib/CloudPDF/doc/versions/types/list_versions_request.rb @@ -7,6 +7,8 @@ module Types class ListVersionsRequest < Internal::Types::Model field :doc_id, -> { String }, optional: false, nullable: false, api_name: "docId" + field :layer_name, -> { String }, optional: false, nullable: false, api_name: "layerName" + field :document_password, -> { String }, optional: true, nullable: false, api_name: "X-Document-Password" end end diff --git a/lib/CloudPDF/doc/versions/types/revision_versions_request.rb b/lib/CloudPDF/doc/versions/types/revision_versions_request.rb index fc274a53..285a472e 100644 --- a/lib/CloudPDF/doc/versions/types/revision_versions_request.rb +++ b/lib/CloudPDF/doc/versions/types/revision_versions_request.rb @@ -7,6 +7,8 @@ module Types class RevisionVersionsRequest < Internal::Types::Model field :doc_id, -> { String }, optional: false, nullable: false, api_name: "docId" + field :layer_name, -> { String }, optional: false, nullable: false, api_name: "layerName" + field :sha, -> { String }, optional: false, nullable: false field :index, -> { Integer }, optional: false, nullable: false diff --git a/lib/CloudPDF/doc/versions/types/signature_contents_versions_request.rb b/lib/CloudPDF/doc/versions/types/signature_contents_versions_request.rb index c954f8b4..359aa855 100644 --- a/lib/CloudPDF/doc/versions/types/signature_contents_versions_request.rb +++ b/lib/CloudPDF/doc/versions/types/signature_contents_versions_request.rb @@ -7,6 +7,8 @@ module Types class SignatureContentsVersionsRequest < Internal::Types::Model field :doc_id, -> { String }, optional: false, nullable: false, api_name: "docId" + field :layer_name, -> { String }, optional: false, nullable: false, api_name: "layerName" + field :sha, -> { String }, optional: false, nullable: false field :field_key, -> { String }, optional: false, nullable: false, api_name: "fieldKey" diff --git a/lib/CloudPDF/doc/versions/types/signature_digest_versions_request.rb b/lib/CloudPDF/doc/versions/types/signature_digest_versions_request.rb index f604b302..9b14e506 100644 --- a/lib/CloudPDF/doc/versions/types/signature_digest_versions_request.rb +++ b/lib/CloudPDF/doc/versions/types/signature_digest_versions_request.rb @@ -7,6 +7,8 @@ module Types class SignatureDigestVersionsRequest < Internal::Types::Model field :doc_id, -> { String }, optional: false, nullable: false, api_name: "docId" + field :layer_name, -> { String }, optional: false, nullable: false, api_name: "layerName" + field :sha, -> { String }, optional: false, nullable: false field :field_key, -> { String }, optional: false, nullable: false, api_name: "fieldKey" diff --git a/lib/CloudPDF/doc/versions/types/signatures_versions_request.rb b/lib/CloudPDF/doc/versions/types/signatures_versions_request.rb index fd9e32ee..f654eb28 100644 --- a/lib/CloudPDF/doc/versions/types/signatures_versions_request.rb +++ b/lib/CloudPDF/doc/versions/types/signatures_versions_request.rb @@ -7,6 +7,8 @@ module Types class SignaturesVersionsRequest < Internal::Types::Model field :doc_id, -> { String }, optional: false, nullable: false, api_name: "docId" + field :layer_name, -> { String }, optional: false, nullable: false, api_name: "layerName" + field :sha, -> { String }, optional: false, nullable: false field :document_password, -> { String }, optional: true, nullable: false, api_name: "X-Document-Password" diff --git a/lib/CloudPDF/documents/client.rb b/lib/CloudPDF/documents/client.rb index 004a75af..34e1773c 100644 --- a/lib/CloudPDF/documents/client.rb +++ b/lib/CloudPDF/documents/client.rb @@ -21,6 +21,10 @@ def initialize(client:) # @option params [Integer, nil] :limit # @option params [String, nil] :cursor # @option params [CloudPDF::Documents::Types::ListDocumentsRequestState, nil] :state + # @option params [String, nil] :q + # @option params [String, nil] :folder_id + # @option params [CloudPDF::Documents::Types::ListDocumentsRequestSort, nil] :sort + # @option params [CloudPDF::Documents::Types::ListDocumentsRequestOrder, nil] :order # # @example # client.documents.list(tenant_id: "tenantId") @@ -32,6 +36,10 @@ def list(request_options: {}, **params) query_params["limit"] = params[:limit] if params.key?(:limit) query_params["cursor"] = params[:cursor] if params.key?(:cursor) query_params["state"] = params[:state] if params.key?(:state) + query_params["q"] = params[:q] if params.key?(:q) + query_params["folderId"] = params[:folder_id] if params.key?(:folder_id) + query_params["sort"] = params[:sort] if params.key?(:sort) + query_params["order"] = params[:order] if params.key?(:order) request = CloudPDF::Internal::JSON::Request.new( base_url: request_options[:base_url], @@ -130,6 +138,53 @@ def delete(request_options: {}, **params) raise error_class.new(response.body, code: code) end + # A document that is being deleted answers 404. + # + # @param request_options [Hash] + # @param params [CloudPDF::Documents::Types::DocumentsUpdateRequest] + # @option request_options [String] :base_url + # @option request_options [Hash{String => Object}] :additional_headers + # @option request_options [Hash{String => Object}] :additional_query_parameters + # @option request_options [Hash{String => Object}] :additional_body_parameters + # @option request_options [Integer] :timeout_in_seconds + # @option params [String] :tenant_id + # @option params [String] :id + # + # @example + # client.documents.update( + # tenant_id: "tenantId", + # id: "id", + # name: "name" + # ) + # + # @return [CloudPDF::Types::DocumentsUpdate200Response] + def update(request_options: {}, **params) + params = CloudPDF::Internal::Types::Utils.normalize_keys(params) + request_data = CloudPDF::Documents::Types::DocumentsUpdateRequest.new(params).to_h + non_body_param_names = %w[tenantId id] + body = request_data.except(*non_body_param_names) + + request = CloudPDF::Internal::JSON::Request.new( + base_url: request_options[:base_url], + method: "PATCH", + path: "v1/tenants/#{URI.encode_uri_component(params[:tenant_id].to_s)}/documents/#{URI.encode_uri_component(params[:id].to_s)}", + body: body, + request_options: request_options + ) + begin + response = @client.send(request) + rescue Net::HTTPRequestTimeout + raise CloudPDF::Errors::TimeoutError + end + code = response.code.to_i + if code.between?(200, 299) + (response.body.to_s.empty? ? nil : CloudPDF::Types::DocumentsUpdate200Response.load(response.body)) + else + error_class = CloudPDF::Errors::ResponseError.subclass_for_code(code) + raise error_class.new(response.body, code: code) + end + end + # @param request_options [Hash] # @param params [CloudPDF::Documents::Types::DocumentsCommitRequest] # @option request_options [String] :base_url diff --git a/lib/CloudPDF/documents/types/documents_import_from_request.rb b/lib/CloudPDF/documents/types/documents_import_from_request.rb index 10abe821..a5bf43e4 100644 --- a/lib/CloudPDF/documents/types/documents_import_from_request.rb +++ b/lib/CloudPDF/documents/types/documents_import_from_request.rb @@ -10,6 +10,10 @@ class DocumentsImportFromRequest < Internal::Types::Model field :expected, -> { CloudPDF::Documents::Types::DocumentsImportFromRequestExpected }, optional: true, nullable: false + field :name, -> { String }, optional: true, nullable: false + + field :folder_id, -> { String }, optional: true, nullable: false, api_name: "folderId" + field :metadata, -> { Internal::Types::Hash[String, Object] }, optional: true, nullable: false field :idempotency_key, -> { String }, optional: true, nullable: false, api_name: "idempotencyKey" diff --git a/lib/CloudPDF/documents/types/documents_init_request.rb b/lib/CloudPDF/documents/types/documents_init_request.rb index bba825fe..0e56ab47 100644 --- a/lib/CloudPDF/documents/types/documents_init_request.rb +++ b/lib/CloudPDF/documents/types/documents_init_request.rb @@ -10,6 +10,10 @@ class DocumentsInitRequest < Internal::Types::Model field :content_sha256, -> { String }, optional: false, nullable: false, api_name: "contentSha256" + field :name, -> { String }, optional: true, nullable: false + + field :folder_id, -> { String }, optional: true, nullable: false, api_name: "folderId" + field :metadata, -> { Internal::Types::Hash[String, Object] }, optional: true, nullable: false field :idempotency_key, -> { String }, optional: true, nullable: false, api_name: "idempotencyKey" diff --git a/lib/CloudPDF/documents/types/documents_update_request.rb b/lib/CloudPDF/documents/types/documents_update_request.rb new file mode 100644 index 00000000..e9ea30ee --- /dev/null +++ b/lib/CloudPDF/documents/types/documents_update_request.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CloudPDF + module Documents + module Types + class DocumentsUpdateRequest < Internal::Types::Model + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :id, -> { String }, optional: false, nullable: false + + field :name, -> { String }, optional: false, nullable: false + end + end + end +end diff --git a/lib/CloudPDF/documents/types/list_documents_request.rb b/lib/CloudPDF/documents/types/list_documents_request.rb index a9b17090..0e1b2e70 100644 --- a/lib/CloudPDF/documents/types/list_documents_request.rb +++ b/lib/CloudPDF/documents/types/list_documents_request.rb @@ -11,6 +11,14 @@ class ListDocumentsRequest < Internal::Types::Model field :cursor, -> { String }, optional: true, nullable: false field :state, -> { CloudPDF::Documents::Types::ListDocumentsRequestState }, optional: true, nullable: false + + field :q, -> { String }, optional: true, nullable: false + + field :folder_id, -> { String }, optional: true, nullable: false, api_name: "folderId" + + field :sort, -> { CloudPDF::Documents::Types::ListDocumentsRequestSort }, optional: true, nullable: false + + field :order, -> { CloudPDF::Documents::Types::ListDocumentsRequestOrder }, optional: true, nullable: false end end end diff --git a/lib/CloudPDF/documents/types/list_documents_request_order.rb b/lib/CloudPDF/documents/types/list_documents_request_order.rb new file mode 100644 index 00000000..2da8edc5 --- /dev/null +++ b/lib/CloudPDF/documents/types/list_documents_request_order.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module CloudPDF + module Documents + module Types + module ListDocumentsRequestOrder + extend CloudPDF::Internal::Types::Enum + + ASC = "asc" + DESC = "desc" + end + end + end +end diff --git a/lib/CloudPDF/documents/types/list_documents_request_sort.rb b/lib/CloudPDF/documents/types/list_documents_request_sort.rb new file mode 100644 index 00000000..b4772caa --- /dev/null +++ b/lib/CloudPDF/documents/types/list_documents_request_sort.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CloudPDF + module Documents + module Types + module ListDocumentsRequestSort + extend CloudPDF::Internal::Types::Enum + + CREATED_AT = "createdAt" + NAME = "name" + SIZE = "size" + end + end + end +end diff --git a/lib/CloudPDF/folders/client.rb b/lib/CloudPDF/folders/client.rb new file mode 100644 index 00000000..9b099da6 --- /dev/null +++ b/lib/CloudPDF/folders/client.rb @@ -0,0 +1,286 @@ +# frozen_string_literal: true + +module CloudPDF + module Folders + class Client + # @param client [CloudPDF::Internal::Http::RawClient] + # + # @return [void] + def initialize(client:) + @client = client + end + + # @param request_options [Hash] + # @param params [Hash] + # @option request_options [String] :base_url + # @option request_options [Hash{String => Object}] :additional_headers + # @option request_options [Hash{String => Object}] :additional_query_parameters + # @option request_options [Hash{String => Object}] :additional_body_parameters + # @option request_options [Integer] :timeout_in_seconds + # @option params [String] :tenant_id + # @option params [Integer, nil] :limit + # @option params [String, nil] :cursor + # @option params [String, nil] :parent_id + # + # @example + # client.folders.list(tenant_id: "tenantId") + # + # @return [CloudPDF::Types::FoldersList200Response] + def list(request_options: {}, **params) + params = CloudPDF::Internal::Types::Utils.normalize_keys(params) + query_params = {} + query_params["limit"] = params[:limit] if params.key?(:limit) + query_params["cursor"] = params[:cursor] if params.key?(:cursor) + query_params["parentId"] = params[:parent_id] if params.key?(:parent_id) + + request = CloudPDF::Internal::JSON::Request.new( + base_url: request_options[:base_url], + method: "GET", + path: "v1/tenants/#{URI.encode_uri_component(params[:tenant_id].to_s)}/folders", + query: query_params, + request_options: request_options + ) + begin + response = @client.send(request) + rescue Net::HTTPRequestTimeout + raise CloudPDF::Errors::TimeoutError + end + code = response.code.to_i + if code.between?(200, 299) + (response.body.to_s.empty? ? nil : CloudPDF::Types::FoldersList200Response.load(response.body)) + else + error_class = CloudPDF::Errors::ResponseError.subclass_for_code(code) + raise error_class.new(response.body, code: code) + end + end + + # 409 Conflict carries `details.reason`: `name-taken` (a sibling has the name, ignoring case; `details.name`) or + # `too-deep` (folders nest at most 100 levels; `details.maxDepth`). 404 when the parent folder does not exist. + # + # @param request_options [Hash] + # @param params [CloudPDF::Folders::Types::FoldersCreateRequest] + # @option request_options [String] :base_url + # @option request_options [Hash{String => Object}] :additional_headers + # @option request_options [Hash{String => Object}] :additional_query_parameters + # @option request_options [Hash{String => Object}] :additional_body_parameters + # @option request_options [Integer] :timeout_in_seconds + # @option params [String] :tenant_id + # + # @example + # client.folders.create( + # tenant_id: "tenantId", + # name: "name" + # ) + # + # @return [CloudPDF::Types::FoldersCreate200Response] + def create(request_options: {}, **params) + params = CloudPDF::Internal::Types::Utils.normalize_keys(params) + request_data = CloudPDF::Folders::Types::FoldersCreateRequest.new(params).to_h + non_body_param_names = %w[tenantId] + body = request_data.except(*non_body_param_names) + + request = CloudPDF::Internal::JSON::Request.new( + base_url: request_options[:base_url], + method: "POST", + path: "v1/tenants/#{URI.encode_uri_component(params[:tenant_id].to_s)}/folders", + body: body, + request_options: request_options + ) + begin + response = @client.send(request) + rescue Net::HTTPRequestTimeout + raise CloudPDF::Errors::TimeoutError + end + code = response.code.to_i + if code.between?(200, 299) + (response.body.to_s.empty? ? nil : CloudPDF::Types::FoldersCreate200Response.load(response.body)) + else + error_class = CloudPDF::Errors::ResponseError.subclass_for_code(code) + raise error_class.new(response.body, code: code) + end + end + + # @param request_options [Hash] + # @param params [Hash] + # @option request_options [String] :base_url + # @option request_options [Hash{String => Object}] :additional_headers + # @option request_options [Hash{String => Object}] :additional_query_parameters + # @option request_options [Hash{String => Object}] :additional_body_parameters + # @option request_options [Integer] :timeout_in_seconds + # @option params [String] :tenant_id + # @option params [String] :folder_id + # + # @example + # client.folders.get( + # tenant_id: "tenantId", + # folder_id: "folderId" + # ) + # + # @return [CloudPDF::Types::FoldersGet200Response] + def get(request_options: {}, **params) + params = CloudPDF::Internal::Types::Utils.normalize_keys(params) + request = CloudPDF::Internal::JSON::Request.new( + base_url: request_options[:base_url], + method: "GET", + path: "v1/tenants/#{URI.encode_uri_component(params[:tenant_id].to_s)}/folders/#{URI.encode_uri_component(params[:folder_id].to_s)}", + request_options: request_options + ) + begin + response = @client.send(request) + rescue Net::HTTPRequestTimeout + raise CloudPDF::Errors::TimeoutError + end + code = response.code.to_i + if code.between?(200, 299) + (response.body.to_s.empty? ? nil : CloudPDF::Types::FoldersGet200Response.load(response.body)) + else + error_class = CloudPDF::Errors::ResponseError.subclass_for_code(code) + raise error_class.new(response.body, code: code) + end + end + + # Without recursive, a folder with anything inside is refused: 409 Conflict with `details.reason` `not-empty` and + # what it holds, counted over every level below, in `details.folders` and `details.documents`. With + # recursive=true, the folder and every folder under it go at once, and every document in them stops opening, + # leaves every list and stops answering its share links at once; their stored files and links are removed in the + # background. Uploads into those folders that have not committed cannot commit. + # + # @param request_options [Hash] + # @param params [Hash] + # @option request_options [String] :base_url + # @option request_options [Hash{String => Object}] :additional_headers + # @option request_options [Hash{String => Object}] :additional_query_parameters + # @option request_options [Hash{String => Object}] :additional_body_parameters + # @option request_options [Integer] :timeout_in_seconds + # @option params [String] :tenant_id + # @option params [String] :folder_id + # @option params [Boolean, nil] :recursive + # + # @example + # client.folders.delete( + # tenant_id: "tenantId", + # folder_id: "folderId" + # ) + # + # @return [untyped] + def delete(request_options: {}, **params) + params = CloudPDF::Internal::Types::Utils.normalize_keys(params) + query_params = {} + query_params["recursive"] = params[:recursive] if params.key?(:recursive) + + request = CloudPDF::Internal::JSON::Request.new( + base_url: request_options[:base_url], + method: "DELETE", + path: "v1/tenants/#{URI.encode_uri_component(params[:tenant_id].to_s)}/folders/#{URI.encode_uri_component(params[:folder_id].to_s)}", + query: query_params, + request_options: request_options + ) + begin + response = @client.send(request) + rescue Net::HTTPRequestTimeout + raise CloudPDF::Errors::TimeoutError + end + code = response.code.to_i + return if code.between?(200, 299) + + error_class = CloudPDF::Errors::ResponseError.subclass_for_code(code) + raise error_class.new(response.body, code: code) + end + + # 409 Conflict with `details.reason` `name-taken` when a sibling has the name, ignoring case. + # + # @param request_options [Hash] + # @param params [CloudPDF::Folders::Types::FoldersUpdateRequest] + # @option request_options [String] :base_url + # @option request_options [Hash{String => Object}] :additional_headers + # @option request_options [Hash{String => Object}] :additional_query_parameters + # @option request_options [Hash{String => Object}] :additional_body_parameters + # @option request_options [Integer] :timeout_in_seconds + # @option params [String] :tenant_id + # @option params [String] :folder_id + # + # @example + # client.folders.update( + # tenant_id: "tenantId", + # folder_id: "folderId", + # name: "name" + # ) + # + # @return [CloudPDF::Types::FoldersUpdate200Response] + def update(request_options: {}, **params) + params = CloudPDF::Internal::Types::Utils.normalize_keys(params) + request_data = CloudPDF::Folders::Types::FoldersUpdateRequest.new(params).to_h + non_body_param_names = %w[tenantId folderId] + body = request_data.except(*non_body_param_names) + + request = CloudPDF::Internal::JSON::Request.new( + base_url: request_options[:base_url], + method: "PATCH", + path: "v1/tenants/#{URI.encode_uri_component(params[:tenant_id].to_s)}/folders/#{URI.encode_uri_component(params[:folder_id].to_s)}", + body: body, + request_options: request_options + ) + begin + response = @client.send(request) + rescue Net::HTTPRequestTimeout + raise CloudPDF::Errors::TimeoutError + end + code = response.code.to_i + if code.between?(200, 299) + (response.body.to_s.empty? ? nil : CloudPDF::Types::FoldersUpdate200Response.load(response.body)) + else + error_class = CloudPDF::Errors::ResponseError.subclass_for_code(code) + raise error_class.new(response.body, code: code) + end + end + + # Up to 1,000 ids in total. A folder moves with everything in it. 404 NotFound names the ids that do not exist or + # are being deleted in `details.documentIds` and `details.folderIds`. 409 Conflict carries `details.reason`: + # `cycle` (the destination is a moved folder or inside one; `details.folderId`), `too-deep` (the move would nest + # folders deeper than 100 levels; `details.maxDepth`) or `name-taken` (a moved folder's name is taken in the + # destination, ignoring case; `details.name`). + # + # @param request_options [Hash] + # @param params [CloudPDF::Folders::Types::FoldersMoveIntoRequest] + # @option request_options [String] :base_url + # @option request_options [Hash{String => Object}] :additional_headers + # @option request_options [Hash{String => Object}] :additional_query_parameters + # @option request_options [Hash{String => Object}] :additional_body_parameters + # @option request_options [Integer] :timeout_in_seconds + # @option params [String] :tenant_id + # @option params [String] :folder_id + # + # @example + # client.folders.move_into( + # tenant_id: "tenantId", + # folder_id: "folderId" + # ) + # + # @return [untyped] + def move_into(request_options: {}, **params) + params = CloudPDF::Internal::Types::Utils.normalize_keys(params) + request_data = CloudPDF::Folders::Types::FoldersMoveIntoRequest.new(params).to_h + non_body_param_names = %w[tenantId folderId] + body = request_data.except(*non_body_param_names) + + request = CloudPDF::Internal::JSON::Request.new( + base_url: request_options[:base_url], + method: "POST", + path: "v1/tenants/#{URI.encode_uri_component(params[:tenant_id].to_s)}/folders/#{URI.encode_uri_component(params[:folder_id].to_s)}/move-into", + body: body, + request_options: request_options + ) + begin + response = @client.send(request) + rescue Net::HTTPRequestTimeout + raise CloudPDF::Errors::TimeoutError + end + code = response.code.to_i + return if code.between?(200, 299) + + error_class = CloudPDF::Errors::ResponseError.subclass_for_code(code) + raise error_class.new(response.body, code: code) + end + end + end +end diff --git a/lib/CloudPDF/folders/types/delete_folders_request.rb b/lib/CloudPDF/folders/types/delete_folders_request.rb new file mode 100644 index 00000000..6d371323 --- /dev/null +++ b/lib/CloudPDF/folders/types/delete_folders_request.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CloudPDF + module Folders + module Types + class DeleteFoldersRequest < Internal::Types::Model + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + + field :recursive, -> { Internal::Types::Boolean }, optional: true, nullable: false + end + end + end +end diff --git a/lib/CloudPDF/folders/types/folders_create_request.rb b/lib/CloudPDF/folders/types/folders_create_request.rb new file mode 100644 index 00000000..099426df --- /dev/null +++ b/lib/CloudPDF/folders/types/folders_create_request.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CloudPDF + module Folders + module Types + class FoldersCreateRequest < Internal::Types::Model + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :name, -> { String }, optional: false, nullable: false + + field :parent_id, -> { String }, optional: true, nullable: false, api_name: "parentId" + end + end + end +end diff --git a/lib/CloudPDF/folders/types/folders_move_into_request.rb b/lib/CloudPDF/folders/types/folders_move_into_request.rb new file mode 100644 index 00000000..a12e9037 --- /dev/null +++ b/lib/CloudPDF/folders/types/folders_move_into_request.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module CloudPDF + module Folders + module Types + class FoldersMoveIntoRequest < Internal::Types::Model + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + + field :document_ids, -> { Internal::Types::Array[String] }, optional: true, nullable: false, api_name: "documentIds" + + field :folder_ids, -> { Internal::Types::Array[String] }, optional: true, nullable: false, api_name: "folderIds" + end + end + end +end diff --git a/lib/CloudPDF/folders/types/folders_update_request.rb b/lib/CloudPDF/folders/types/folders_update_request.rb new file mode 100644 index 00000000..4c4eeecc --- /dev/null +++ b/lib/CloudPDF/folders/types/folders_update_request.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CloudPDF + module Folders + module Types + class FoldersUpdateRequest < Internal::Types::Model + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + + field :name, -> { String }, optional: false, nullable: false + end + end + end +end diff --git a/lib/CloudPDF/folders/types/get_folders_request.rb b/lib/CloudPDF/folders/types/get_folders_request.rb new file mode 100644 index 00000000..7e623d0a --- /dev/null +++ b/lib/CloudPDF/folders/types/get_folders_request.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module CloudPDF + module Folders + module Types + class GetFoldersRequest < Internal::Types::Model + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + end + end + end +end diff --git a/lib/CloudPDF/folders/types/list_folders_request.rb b/lib/CloudPDF/folders/types/list_folders_request.rb new file mode 100644 index 00000000..54a608ad --- /dev/null +++ b/lib/CloudPDF/folders/types/list_folders_request.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module CloudPDF + module Folders + module Types + class ListFoldersRequest < Internal::Types::Model + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :limit, -> { Integer }, optional: true, nullable: false + + field :cursor, -> { String }, optional: true, nullable: false + + field :parent_id, -> { String }, optional: true, nullable: false, api_name: "parentId" + end + end + end +end diff --git a/lib/CloudPDF/shares/types/shares_create_request.rb b/lib/CloudPDF/shares/types/shares_create_request.rb index 34d833e9..bc02817e 100644 --- a/lib/CloudPDF/shares/types/shares_create_request.rb +++ b/lib/CloudPDF/shares/types/shares_create_request.rb @@ -18,6 +18,8 @@ class SharesCreateRequest < Internal::Types::Model field :visitor_identity, -> { CloudPDF::Shares::Types::SharesCreateRequestVisitorIdentity }, optional: true, nullable: false, api_name: "visitorIdentity" + field :identity, -> { CloudPDF::Types::Identity }, optional: true, nullable: false + field :scope, -> { Internal::Types::Array[String] }, optional: false, nullable: false field :origins, -> { Internal::Types::Array[String] }, optional: true, nullable: false diff --git a/lib/CloudPDF/shares/types/shares_update_request.rb b/lib/CloudPDF/shares/types/shares_update_request.rb index b8ebe193..1064bfe7 100644 --- a/lib/CloudPDF/shares/types/shares_update_request.rb +++ b/lib/CloudPDF/shares/types/shares_update_request.rb @@ -18,6 +18,8 @@ class SharesUpdateRequest < Internal::Types::Model field :visitor_identity, -> { CloudPDF::Shares::Types::SharesUpdateRequestVisitorIdentity }, optional: true, nullable: false, api_name: "visitorIdentity" + field :identity, -> { CloudPDF::Types::Identity }, optional: true, nullable: false + field :scope, -> { Internal::Types::Array[String] }, optional: true, nullable: false field :origins, -> { Internal::Types::Array[String] }, optional: true, nullable: false diff --git a/lib/CloudPDF/types/doc_versions_list200response.rb b/lib/CloudPDF/types/doc_versions_list200response.rb index 4b7a1d19..4669a77a 100644 --- a/lib/CloudPDF/types/doc_versions_list200response.rb +++ b/lib/CloudPDF/types/doc_versions_list200response.rb @@ -3,7 +3,7 @@ module CloudPDF module Types class DocVersionsList200Response < Internal::Types::Model - field :head, -> { String }, optional: false, nullable: false + field :base_sha, -> { String }, optional: false, nullable: false, api_name: "baseSha" field :versions, -> { Internal::Types::Array[CloudPDF::Types::DocVersionsList200ResponseVersionsItem] }, optional: false, nullable: false end diff --git a/lib/CloudPDF/types/documents_commit200response_document.rb b/lib/CloudPDF/types/documents_commit200response_document.rb index d76bd05c..2247143c 100644 --- a/lib/CloudPDF/types/documents_commit200response_document.rb +++ b/lib/CloudPDF/types/documents_commit200response_document.rb @@ -7,6 +7,10 @@ class DocumentsCommit200ResponseDocument < Internal::Types::Model field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + field :name, -> { String }, optional: false, nullable: false + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + field :state, -> { CloudPDF::Types::DocumentsCommit200ResponseDocumentState }, optional: false, nullable: false field :base_sha, -> { String }, optional: false, nullable: true, api_name: "baseSha" diff --git a/lib/CloudPDF/types/documents_get200response_document.rb b/lib/CloudPDF/types/documents_get200response_document.rb index 6c5f0c4e..8cf39f30 100644 --- a/lib/CloudPDF/types/documents_get200response_document.rb +++ b/lib/CloudPDF/types/documents_get200response_document.rb @@ -7,6 +7,10 @@ class DocumentsGet200ResponseDocument < Internal::Types::Model field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + field :name, -> { String }, optional: false, nullable: false + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + field :state, -> { CloudPDF::Types::DocumentsGet200ResponseDocumentState }, optional: false, nullable: false field :base_sha, -> { String }, optional: false, nullable: true, api_name: "baseSha" diff --git a/lib/CloudPDF/types/documents_import_from200response_document.rb b/lib/CloudPDF/types/documents_import_from200response_document.rb index 9e46a41e..af55c16e 100644 --- a/lib/CloudPDF/types/documents_import_from200response_document.rb +++ b/lib/CloudPDF/types/documents_import_from200response_document.rb @@ -7,6 +7,10 @@ class DocumentsImportFrom200ResponseDocument < Internal::Types::Model field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + field :name, -> { String }, optional: false, nullable: false + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + field :state, -> { CloudPDF::Types::DocumentsImportFrom200ResponseDocumentState }, optional: false, nullable: false field :base_sha, -> { String }, optional: false, nullable: true, api_name: "baseSha" diff --git a/lib/CloudPDF/types/documents_import_from202response_document.rb b/lib/CloudPDF/types/documents_import_from202response_document.rb index 63af6899..210cc2bf 100644 --- a/lib/CloudPDF/types/documents_import_from202response_document.rb +++ b/lib/CloudPDF/types/documents_import_from202response_document.rb @@ -7,6 +7,10 @@ class DocumentsImportFrom202ResponseDocument < Internal::Types::Model field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + field :name, -> { String }, optional: false, nullable: false + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + field :state, -> { CloudPDF::Types::DocumentsImportFrom202ResponseDocumentState }, optional: false, nullable: false field :base_sha, -> { String }, optional: false, nullable: true, api_name: "baseSha" diff --git a/lib/CloudPDF/types/documents_init200response_created_document.rb b/lib/CloudPDF/types/documents_init200response_created_document.rb index 310574da..a0249e93 100644 --- a/lib/CloudPDF/types/documents_init200response_created_document.rb +++ b/lib/CloudPDF/types/documents_init200response_created_document.rb @@ -7,6 +7,10 @@ class DocumentsInit200ResponseCreatedDocument < Internal::Types::Model field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + field :name, -> { String }, optional: false, nullable: false + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + field :state, -> { CloudPDF::Types::DocumentsInit200ResponseCreatedDocumentState }, optional: false, nullable: false field :base_sha, -> { String }, optional: false, nullable: true, api_name: "baseSha" diff --git a/lib/CloudPDF/types/documents_init200response_deduped_document.rb b/lib/CloudPDF/types/documents_init200response_deduped_document.rb index 208d5638..21253d13 100644 --- a/lib/CloudPDF/types/documents_init200response_deduped_document.rb +++ b/lib/CloudPDF/types/documents_init200response_deduped_document.rb @@ -7,6 +7,10 @@ class DocumentsInit200ResponseDedupedDocument < Internal::Types::Model field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + field :name, -> { String }, optional: false, nullable: false + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + field :state, -> { CloudPDF::Types::DocumentsInit200ResponseDedupedDocumentState }, optional: false, nullable: false field :base_sha, -> { String }, optional: false, nullable: true, api_name: "baseSha" diff --git a/lib/CloudPDF/types/documents_init200response_resumed_document.rb b/lib/CloudPDF/types/documents_init200response_resumed_document.rb index 5b39c24c..3baa2542 100644 --- a/lib/CloudPDF/types/documents_init200response_resumed_document.rb +++ b/lib/CloudPDF/types/documents_init200response_resumed_document.rb @@ -7,6 +7,10 @@ class DocumentsInit200ResponseResumedDocument < Internal::Types::Model field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + field :name, -> { String }, optional: false, nullable: false + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + field :state, -> { CloudPDF::Types::DocumentsInit200ResponseResumedDocumentState }, optional: false, nullable: false field :base_sha, -> { String }, optional: false, nullable: true, api_name: "baseSha" diff --git a/lib/CloudPDF/types/documents_list200response_documents_item.rb b/lib/CloudPDF/types/documents_list200response_documents_item.rb index 001da975..10029d1c 100644 --- a/lib/CloudPDF/types/documents_list200response_documents_item.rb +++ b/lib/CloudPDF/types/documents_list200response_documents_item.rb @@ -7,6 +7,10 @@ class DocumentsList200ResponseDocumentsItem < Internal::Types::Model field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + field :name, -> { String }, optional: false, nullable: false + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + field :state, -> { CloudPDF::Types::DocumentsList200ResponseDocumentsItemState }, optional: false, nullable: false field :base_sha, -> { String }, optional: false, nullable: true, api_name: "baseSha" diff --git a/lib/CloudPDF/types/documents_update200response.rb b/lib/CloudPDF/types/documents_update200response.rb new file mode 100644 index 00000000..eaabe800 --- /dev/null +++ b/lib/CloudPDF/types/documents_update200response.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + class DocumentsUpdate200Response < Internal::Types::Model + field :document, -> { CloudPDF::Types::DocumentsUpdate200ResponseDocument }, optional: false, nullable: false + end + end +end diff --git a/lib/CloudPDF/types/documents_update200response_document.rb b/lib/CloudPDF/types/documents_update200response_document.rb new file mode 100644 index 00000000..735e3d24 --- /dev/null +++ b/lib/CloudPDF/types/documents_update200response_document.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + class DocumentsUpdate200ResponseDocument < Internal::Types::Model + field :id, -> { String }, optional: false, nullable: false + + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :name, -> { String }, optional: false, nullable: false + + field :folder_id, -> { String }, optional: false, nullable: false, api_name: "folderId" + + field :state, -> { CloudPDF::Types::DocumentsUpdate200ResponseDocumentState }, optional: false, nullable: false + + field :base_sha, -> { String }, optional: false, nullable: true, api_name: "baseSha" + + field :storage_size_bytes, -> { Integer }, optional: false, nullable: true, api_name: "storageSizeBytes" + + field :metadata, -> { Internal::Types::Hash[String, Object] }, optional: false, nullable: true + + field :idempotency_key, -> { String }, optional: false, nullable: true, api_name: "idempotencyKey" + + field :failure_reason, -> { String }, optional: false, nullable: true, api_name: "failureReason" + + field :thumbnail_state, -> { CloudPDF::Types::DocumentsUpdate200ResponseDocumentThumbnailState }, optional: true, nullable: false, api_name: "thumbnailState" + + field :thumbnail_url, -> { String }, optional: true, nullable: false, api_name: "thumbnailUrl" + + field :created_at, -> { Integer }, optional: false, nullable: false, api_name: "createdAt" + + field :updated_at, -> { Integer }, optional: false, nullable: false, api_name: "updatedAt" + + field :created_by, -> { String }, optional: false, nullable: true, api_name: "createdBy" + end + end +end diff --git a/lib/CloudPDF/types/documents_update200response_document_state.rb b/lib/CloudPDF/types/documents_update200response_document_state.rb new file mode 100644 index 00000000..739d4b01 --- /dev/null +++ b/lib/CloudPDF/types/documents_update200response_document_state.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module DocumentsUpdate200ResponseDocumentState + extend CloudPDF::Internal::Types::Enum + + PENDING = "pending" + READY = "ready" + FAILED = "failed" + DELETING = "deleting" + end + end +end diff --git a/lib/CloudPDF/types/documents_update200response_document_thumbnail_state.rb b/lib/CloudPDF/types/documents_update200response_document_thumbnail_state.rb new file mode 100644 index 00000000..db975ffc --- /dev/null +++ b/lib/CloudPDF/types/documents_update200response_document_thumbnail_state.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module DocumentsUpdate200ResponseDocumentThumbnailState + extend CloudPDF::Internal::Types::Enum + + PENDING = "pending" + READY = "ready" + LOCKED = "locked" + FAILED = "failed" + end + end +end diff --git a/lib/CloudPDF/types/documents_update400response.rb b/lib/CloudPDF/types/documents_update400response.rb new file mode 100644 index 00000000..d166030b --- /dev/null +++ b/lib/CloudPDF/types/documents_update400response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module DocumentsUpdate400Response + # DocumentsUpdate400Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/documents_update403response.rb b/lib/CloudPDF/types/documents_update403response.rb new file mode 100644 index 00000000..39b5a922 --- /dev/null +++ b/lib/CloudPDF/types/documents_update403response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module DocumentsUpdate403Response + # DocumentsUpdate403Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/documents_update404response.rb b/lib/CloudPDF/types/documents_update404response.rb new file mode 100644 index 00000000..eeceab38 --- /dev/null +++ b/lib/CloudPDF/types/documents_update404response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module DocumentsUpdate404Response + # DocumentsUpdate404Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/engine_error_payload_code.rb b/lib/CloudPDF/types/engine_error_payload_code.rb index e55eaea8..c6317f9c 100644 --- a/lib/CloudPDF/types/engine_error_payload_code.rb +++ b/lib/CloudPDF/types/engine_error_payload_code.rb @@ -27,7 +27,6 @@ module EngineErrorPayloadCode SIGNING_VERSION_MISMATCH = "SigningVersionMismatch" SIGNATURE_REFUSED = "SignatureRefused" PROTECTED_DOCUMENT = "ProtectedDocument" - STALE_BASE = "StaleBase" PAYLOAD_TOO_LARGE = "PayloadTooLarge" OBJECT_NUMBER_UNAVAILABLE = "ObjectNumberUnavailable" LAYER_FULL = "LayerFull" diff --git a/lib/CloudPDF/types/folders_create200response.rb b/lib/CloudPDF/types/folders_create200response.rb new file mode 100644 index 00000000..f17866d2 --- /dev/null +++ b/lib/CloudPDF/types/folders_create200response.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + class FoldersCreate200Response < Internal::Types::Model + field :folder, -> { CloudPDF::Types::FoldersCreate200ResponseFolder }, optional: false, nullable: false + end + end +end diff --git a/lib/CloudPDF/types/folders_create200response_folder.rb b/lib/CloudPDF/types/folders_create200response_folder.rb new file mode 100644 index 00000000..ce01071e --- /dev/null +++ b/lib/CloudPDF/types/folders_create200response_folder.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + class FoldersCreate200ResponseFolder < Internal::Types::Model + field :id, -> { String }, optional: false, nullable: false + + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :parent_id, -> { String }, optional: false, nullable: false, api_name: "parentId" + + field :name, -> { String }, optional: false, nullable: false + + field :created_at, -> { Integer }, optional: false, nullable: false, api_name: "createdAt" + + field :updated_at, -> { Integer }, optional: false, nullable: false, api_name: "updatedAt" + + field :created_by, -> { String }, optional: false, nullable: true, api_name: "createdBy" + end + end +end diff --git a/lib/CloudPDF/types/folders_create400response.rb b/lib/CloudPDF/types/folders_create400response.rb new file mode 100644 index 00000000..6cb75956 --- /dev/null +++ b/lib/CloudPDF/types/folders_create400response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersCreate400Response + # FoldersCreate400Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_create403response.rb b/lib/CloudPDF/types/folders_create403response.rb new file mode 100644 index 00000000..16dbf88a --- /dev/null +++ b/lib/CloudPDF/types/folders_create403response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersCreate403Response + # FoldersCreate403Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_create404response.rb b/lib/CloudPDF/types/folders_create404response.rb new file mode 100644 index 00000000..070abda0 --- /dev/null +++ b/lib/CloudPDF/types/folders_create404response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersCreate404Response + # FoldersCreate404Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_create409response.rb b/lib/CloudPDF/types/folders_create409response.rb new file mode 100644 index 00000000..23a6d2ad --- /dev/null +++ b/lib/CloudPDF/types/folders_create409response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersCreate409Response + # FoldersCreate409Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_delete403response.rb b/lib/CloudPDF/types/folders_delete403response.rb new file mode 100644 index 00000000..470bb0c3 --- /dev/null +++ b/lib/CloudPDF/types/folders_delete403response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersDelete403Response + # FoldersDelete403Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_delete404response.rb b/lib/CloudPDF/types/folders_delete404response.rb new file mode 100644 index 00000000..663cf81d --- /dev/null +++ b/lib/CloudPDF/types/folders_delete404response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersDelete404Response + # FoldersDelete404Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_delete409response.rb b/lib/CloudPDF/types/folders_delete409response.rb new file mode 100644 index 00000000..3f01fa8c --- /dev/null +++ b/lib/CloudPDF/types/folders_delete409response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersDelete409Response + # FoldersDelete409Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_get200response.rb b/lib/CloudPDF/types/folders_get200response.rb new file mode 100644 index 00000000..488eb720 --- /dev/null +++ b/lib/CloudPDF/types/folders_get200response.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + class FoldersGet200Response < Internal::Types::Model + field :folder, -> { CloudPDF::Types::FoldersGet200ResponseFolder }, optional: false, nullable: false + + field :path, -> { Internal::Types::Array[CloudPDF::Types::FoldersGet200ResponsePathItem] }, optional: false, nullable: false + end + end +end diff --git a/lib/CloudPDF/types/folders_get200response_folder.rb b/lib/CloudPDF/types/folders_get200response_folder.rb new file mode 100644 index 00000000..135cc496 --- /dev/null +++ b/lib/CloudPDF/types/folders_get200response_folder.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + class FoldersGet200ResponseFolder < Internal::Types::Model + field :id, -> { String }, optional: false, nullable: false + + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :parent_id, -> { String }, optional: false, nullable: false, api_name: "parentId" + + field :name, -> { String }, optional: false, nullable: false + + field :created_at, -> { Integer }, optional: false, nullable: false, api_name: "createdAt" + + field :updated_at, -> { Integer }, optional: false, nullable: false, api_name: "updatedAt" + + field :created_by, -> { String }, optional: false, nullable: true, api_name: "createdBy" + end + end +end diff --git a/lib/CloudPDF/types/folders_get200response_path_item.rb b/lib/CloudPDF/types/folders_get200response_path_item.rb new file mode 100644 index 00000000..527818b3 --- /dev/null +++ b/lib/CloudPDF/types/folders_get200response_path_item.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + class FoldersGet200ResponsePathItem < Internal::Types::Model + field :id, -> { String }, optional: false, nullable: false + + field :name, -> { String }, optional: false, nullable: false + end + end +end diff --git a/lib/CloudPDF/types/folders_get403response.rb b/lib/CloudPDF/types/folders_get403response.rb new file mode 100644 index 00000000..be1f96d9 --- /dev/null +++ b/lib/CloudPDF/types/folders_get403response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersGet403Response + # FoldersGet403Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_get404response.rb b/lib/CloudPDF/types/folders_get404response.rb new file mode 100644 index 00000000..823edafe --- /dev/null +++ b/lib/CloudPDF/types/folders_get404response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersGet404Response + # FoldersGet404Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_list200response.rb b/lib/CloudPDF/types/folders_list200response.rb new file mode 100644 index 00000000..d0212776 --- /dev/null +++ b/lib/CloudPDF/types/folders_list200response.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + class FoldersList200Response < Internal::Types::Model + field :folders, -> { Internal::Types::Array[CloudPDF::Types::FoldersList200ResponseFoldersItem] }, optional: false, nullable: false + + field :next_cursor, -> { String }, optional: false, nullable: true, api_name: "nextCursor" + end + end +end diff --git a/lib/CloudPDF/types/folders_list200response_folders_item.rb b/lib/CloudPDF/types/folders_list200response_folders_item.rb new file mode 100644 index 00000000..8d4f17c7 --- /dev/null +++ b/lib/CloudPDF/types/folders_list200response_folders_item.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + class FoldersList200ResponseFoldersItem < Internal::Types::Model + field :id, -> { String }, optional: false, nullable: false + + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :parent_id, -> { String }, optional: false, nullable: false, api_name: "parentId" + + field :name, -> { String }, optional: false, nullable: false + + field :created_at, -> { Integer }, optional: false, nullable: false, api_name: "createdAt" + + field :updated_at, -> { Integer }, optional: false, nullable: false, api_name: "updatedAt" + + field :created_by, -> { String }, optional: false, nullable: true, api_name: "createdBy" + end + end +end diff --git a/lib/CloudPDF/types/folders_list400response.rb b/lib/CloudPDF/types/folders_list400response.rb new file mode 100644 index 00000000..651bf4a6 --- /dev/null +++ b/lib/CloudPDF/types/folders_list400response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersList400Response + # FoldersList400Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_list403response.rb b/lib/CloudPDF/types/folders_list403response.rb new file mode 100644 index 00000000..9a4d6f2b --- /dev/null +++ b/lib/CloudPDF/types/folders_list403response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersList403Response + # FoldersList403Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_list404response.rb b/lib/CloudPDF/types/folders_list404response.rb new file mode 100644 index 00000000..24aedebf --- /dev/null +++ b/lib/CloudPDF/types/folders_list404response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersList404Response + # FoldersList404Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_move_into400response.rb b/lib/CloudPDF/types/folders_move_into400response.rb new file mode 100644 index 00000000..27f00118 --- /dev/null +++ b/lib/CloudPDF/types/folders_move_into400response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersMoveInto400Response + # FoldersMoveInto400Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_move_into403response.rb b/lib/CloudPDF/types/folders_move_into403response.rb new file mode 100644 index 00000000..50f6aa5e --- /dev/null +++ b/lib/CloudPDF/types/folders_move_into403response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersMoveInto403Response + # FoldersMoveInto403Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_move_into404response.rb b/lib/CloudPDF/types/folders_move_into404response.rb new file mode 100644 index 00000000..a8c9d27a --- /dev/null +++ b/lib/CloudPDF/types/folders_move_into404response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersMoveInto404Response + # FoldersMoveInto404Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_move_into409response.rb b/lib/CloudPDF/types/folders_move_into409response.rb new file mode 100644 index 00000000..77153c10 --- /dev/null +++ b/lib/CloudPDF/types/folders_move_into409response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersMoveInto409Response + # FoldersMoveInto409Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_update200response.rb b/lib/CloudPDF/types/folders_update200response.rb new file mode 100644 index 00000000..15d7b516 --- /dev/null +++ b/lib/CloudPDF/types/folders_update200response.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + class FoldersUpdate200Response < Internal::Types::Model + field :folder, -> { CloudPDF::Types::FoldersUpdate200ResponseFolder }, optional: false, nullable: false + end + end +end diff --git a/lib/CloudPDF/types/folders_update200response_folder.rb b/lib/CloudPDF/types/folders_update200response_folder.rb new file mode 100644 index 00000000..7c5bd595 --- /dev/null +++ b/lib/CloudPDF/types/folders_update200response_folder.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + class FoldersUpdate200ResponseFolder < Internal::Types::Model + field :id, -> { String }, optional: false, nullable: false + + field :tenant_id, -> { String }, optional: false, nullable: false, api_name: "tenantId" + + field :parent_id, -> { String }, optional: false, nullable: false, api_name: "parentId" + + field :name, -> { String }, optional: false, nullable: false + + field :created_at, -> { Integer }, optional: false, nullable: false, api_name: "createdAt" + + field :updated_at, -> { Integer }, optional: false, nullable: false, api_name: "updatedAt" + + field :created_by, -> { String }, optional: false, nullable: true, api_name: "createdBy" + end + end +end diff --git a/lib/CloudPDF/types/folders_update400response.rb b/lib/CloudPDF/types/folders_update400response.rb new file mode 100644 index 00000000..8a5cb13a --- /dev/null +++ b/lib/CloudPDF/types/folders_update400response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersUpdate400Response + # FoldersUpdate400Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_update403response.rb b/lib/CloudPDF/types/folders_update403response.rb new file mode 100644 index 00000000..daf0c542 --- /dev/null +++ b/lib/CloudPDF/types/folders_update403response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersUpdate403Response + # FoldersUpdate403Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_update404response.rb b/lib/CloudPDF/types/folders_update404response.rb new file mode 100644 index 00000000..4faccc56 --- /dev/null +++ b/lib/CloudPDF/types/folders_update404response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersUpdate404Response + # FoldersUpdate404Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/folders_update409response.rb b/lib/CloudPDF/types/folders_update409response.rb new file mode 100644 index 00000000..51f06756 --- /dev/null +++ b/lib/CloudPDF/types/folders_update409response.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module CloudPDF + module Types + module FoldersUpdate409Response + # FoldersUpdate409Response is an alias for AdminErrorPayload + + # @option str [String] + # + # @return [untyped] + def self.load(str) + ::JSON.parse(str) + end + + # @option value [untyped] + # + # @return [String] + def self.dump(value) + ::JSON.generate(value) + end + end + end +end diff --git a/lib/CloudPDF/types/tokens_issue_request_doc_identity.rb b/lib/CloudPDF/types/identity.rb similarity index 91% rename from lib/CloudPDF/types/tokens_issue_request_doc_identity.rb rename to lib/CloudPDF/types/identity.rb index bf75885c..12caec54 100644 --- a/lib/CloudPDF/types/tokens_issue_request_doc_identity.rb +++ b/lib/CloudPDF/types/identity.rb @@ -2,7 +2,7 @@ module CloudPDF module Types - class TokensIssueRequestDocIdentity < Internal::Types::Model + class Identity < Internal::Types::Model field :user_id, -> { String }, optional: true, nullable: false, api_name: "userId" field :display_name, -> { String }, optional: true, nullable: false, api_name: "displayName" diff --git a/lib/CloudPDF/types/shares_archive200response_share.rb b/lib/CloudPDF/types/shares_archive200response_share.rb index 786405f4..7cdc986b 100644 --- a/lib/CloudPDF/types/shares_archive200response_share.rb +++ b/lib/CloudPDF/types/shares_archive200response_share.rb @@ -19,6 +19,8 @@ class SharesArchive200ResponseShare < Internal::Types::Model field :visitor_identity, -> { CloudPDF::Types::SharesArchive200ResponseShareVisitorIdentity }, optional: false, nullable: true, api_name: "visitorIdentity" + field :identity, -> { CloudPDF::Types::Identity }, optional: false, nullable: true + field :scope, -> { Internal::Types::Array[String] }, optional: false, nullable: false field :origins, -> { Internal::Types::Array[String] }, optional: false, nullable: true diff --git a/lib/CloudPDF/types/shares_create200response_share.rb b/lib/CloudPDF/types/shares_create200response_share.rb index a4719485..6c5349ed 100644 --- a/lib/CloudPDF/types/shares_create200response_share.rb +++ b/lib/CloudPDF/types/shares_create200response_share.rb @@ -19,6 +19,8 @@ class SharesCreate200ResponseShare < Internal::Types::Model field :visitor_identity, -> { CloudPDF::Types::SharesCreate200ResponseShareVisitorIdentity }, optional: false, nullable: true, api_name: "visitorIdentity" + field :identity, -> { CloudPDF::Types::Identity }, optional: false, nullable: true + field :scope, -> { Internal::Types::Array[String] }, optional: false, nullable: false field :origins, -> { Internal::Types::Array[String] }, optional: false, nullable: true diff --git a/lib/CloudPDF/types/shares_get200response_share.rb b/lib/CloudPDF/types/shares_get200response_share.rb index 78608089..11338d6b 100644 --- a/lib/CloudPDF/types/shares_get200response_share.rb +++ b/lib/CloudPDF/types/shares_get200response_share.rb @@ -19,6 +19,8 @@ class SharesGet200ResponseShare < Internal::Types::Model field :visitor_identity, -> { CloudPDF::Types::SharesGet200ResponseShareVisitorIdentity }, optional: false, nullable: true, api_name: "visitorIdentity" + field :identity, -> { CloudPDF::Types::Identity }, optional: false, nullable: true + field :scope, -> { Internal::Types::Array[String] }, optional: false, nullable: false field :origins, -> { Internal::Types::Array[String] }, optional: false, nullable: true diff --git a/lib/CloudPDF/types/shares_list200response_shares_item.rb b/lib/CloudPDF/types/shares_list200response_shares_item.rb index c03d2358..2a14a4ed 100644 --- a/lib/CloudPDF/types/shares_list200response_shares_item.rb +++ b/lib/CloudPDF/types/shares_list200response_shares_item.rb @@ -19,6 +19,8 @@ class SharesList200ResponseSharesItem < Internal::Types::Model field :visitor_identity, -> { CloudPDF::Types::SharesList200ResponseSharesItemVisitorIdentity }, optional: false, nullable: true, api_name: "visitorIdentity" + field :identity, -> { CloudPDF::Types::Identity }, optional: false, nullable: true + field :scope, -> { Internal::Types::Array[String] }, optional: false, nullable: false field :origins, -> { Internal::Types::Array[String] }, optional: false, nullable: true diff --git a/lib/CloudPDF/types/shares_update200response_share.rb b/lib/CloudPDF/types/shares_update200response_share.rb index 2bb69bb9..a01ca97a 100644 --- a/lib/CloudPDF/types/shares_update200response_share.rb +++ b/lib/CloudPDF/types/shares_update200response_share.rb @@ -19,6 +19,8 @@ class SharesUpdate200ResponseShare < Internal::Types::Model field :visitor_identity, -> { CloudPDF::Types::SharesUpdate200ResponseShareVisitorIdentity }, optional: false, nullable: true, api_name: "visitorIdentity" + field :identity, -> { CloudPDF::Types::Identity }, optional: false, nullable: true + field :scope, -> { Internal::Types::Array[String] }, optional: false, nullable: false field :origins, -> { Internal::Types::Array[String] }, optional: false, nullable: true diff --git a/lib/CloudPDF/types/tokens_issue_request_doc.rb b/lib/CloudPDF/types/tokens_issue_request_doc.rb index 120f1a51..b74c9d1a 100644 --- a/lib/CloudPDF/types/tokens_issue_request_doc.rb +++ b/lib/CloudPDF/types/tokens_issue_request_doc.rb @@ -11,7 +11,7 @@ class TokensIssueRequestDoc < Internal::Types::Model field :scope, -> { Internal::Types::Array[String] }, optional: false, nullable: false - field :identity, -> { CloudPDF::Types::TokensIssueRequestDocIdentity }, optional: true, nullable: false + field :identity, -> { CloudPDF::Types::Identity }, optional: true, nullable: false field :origins, -> { Internal::Types::Array[String] }, optional: true, nullable: false diff --git a/lib/CloudPDF/types/tokens_issue_request_tenant.rb b/lib/CloudPDF/types/tokens_issue_request_tenant.rb index 75b4daf6..1e389d3e 100644 --- a/lib/CloudPDF/types/tokens_issue_request_tenant.rb +++ b/lib/CloudPDF/types/tokens_issue_request_tenant.rb @@ -5,7 +5,7 @@ module Types class TokensIssueRequestTenant < Internal::Types::Model field :sub, -> { String }, optional: false, nullable: false - field :scope, -> { Internal::Types::Array[CloudPDF::Types::TokensIssueRequestTenantScopeItem] }, optional: false, nullable: false + field :scope, -> { Internal::Types::Array[String] }, optional: false, nullable: false field :expires_in, -> { Integer }, optional: false, nullable: false, api_name: "expiresIn" end diff --git a/lib/CloudPDF/types/tokens_issue_request_tenant_scope_item.rb b/lib/CloudPDF/types/tokens_issue_request_tenant_scope_item.rb deleted file mode 100644 index 858c2bf2..00000000 --- a/lib/CloudPDF/types/tokens_issue_request_tenant_scope_item.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -module CloudPDF - module Types - class TokensIssueRequestTenantScopeItem < Internal::Types::Model - extend CloudPDF::Internal::Types::Union - - member -> { CloudPDF::Types::TokensIssueRequestTenantScopeItemZero } - - member -> { CloudPDF::Types::TokensIssueRequestTenantScopeItemOne } - end - end -end diff --git a/lib/CloudPDF/types/tokens_issue_request_tenant_scope_item_one.rb b/lib/CloudPDF/types/tokens_issue_request_tenant_scope_item_one.rb deleted file mode 100644 index 7043d302..00000000 --- a/lib/CloudPDF/types/tokens_issue_request_tenant_scope_item_one.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -module CloudPDF - module Types - module TokensIssueRequestTenantScopeItemOne - extend CloudPDF::Internal::Types::Enum - - DOCS_CREATE = "docs.create" - DOCS_READ = "docs.read" - DOCS_DELETE = "docs.delete" - TOKENS_ISSUE_DOC = "tokens.issue-doc" - TOKENS_REVOKE = "tokens.revoke" - SHARES_MANAGE = "shares.manage" - end - end -end diff --git a/lib/CloudPDF/types/tokens_issue_request_tenant_scope_item_zero.rb b/lib/CloudPDF/types/tokens_issue_request_tenant_scope_item_zero.rb deleted file mode 100644 index d53a9010..00000000 --- a/lib/CloudPDF/types/tokens_issue_request_tenant_scope_item_zero.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -module CloudPDF - module Types - module TokensIssueRequestTenantScopeItemZero - extend CloudPDF::Internal::Types::Enum - - ALL = "*" - end - end -end diff --git a/lib/CloudPDF/version.rb b/lib/CloudPDF/version.rb index c54e1f9d..b0e451ef 100644 --- a/lib/CloudPDF/version.rb +++ b/lib/CloudPDF/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module CloudPDF - VERSION = "3.0.0.alpha.17" + VERSION = "3.0.0.alpha.18" end diff --git a/lib/cloudpdf.rb b/lib/cloudpdf.rb index 71991687..181a6540 100644 --- a/lib/cloudpdf.rb +++ b/lib/cloudpdf.rb @@ -747,6 +747,8 @@ require_relative "CloudPDF/shares/types/shares_update_request_visitor_identity_ask" require_relative "CloudPDF/shares/types/shares_update_request_visitor_identity" require_relative "CloudPDF/documents/types/list_documents_request_state" +require_relative "CloudPDF/documents/types/list_documents_request_sort" +require_relative "CloudPDF/documents/types/list_documents_request_order" require_relative "CloudPDF/documents/types/documents_import_from_request_source_url" require_relative "CloudPDF/documents/types/documents_import_from_request_source_connection" require_relative "CloudPDF/documents/types/documents_import_from_request_source" @@ -791,6 +793,7 @@ require_relative "CloudPDF/types/mutation_meta" require_relative "CloudPDF/types/document_metadata_trapped" require_relative "CloudPDF/types/document_metadata" +require_relative "CloudPDF/types/identity" require_relative "CloudPDF/types/pdf_field_actions" require_relative "CloudPDF/types/pdf_page_actions" require_relative "CloudPDF/types/document_actions_snapshot_name_tree_scripts_item" @@ -1378,6 +1381,13 @@ require_relative "CloudPDF/types/documents_get200response" require_relative "CloudPDF/types/documents_get403response" require_relative "CloudPDF/types/documents_get404response" +require_relative "CloudPDF/types/documents_update200response_document_state" +require_relative "CloudPDF/types/documents_update200response_document_thumbnail_state" +require_relative "CloudPDF/types/documents_update200response_document" +require_relative "CloudPDF/types/documents_update200response" +require_relative "CloudPDF/types/documents_update400response" +require_relative "CloudPDF/types/documents_update403response" +require_relative "CloudPDF/types/documents_update404response" require_relative "CloudPDF/types/documents_download403response" require_relative "CloudPDF/types/documents_download404response" require_relative "CloudPDF/types/documents_delete403response" @@ -1392,12 +1402,37 @@ require_relative "CloudPDF/types/documents_layers_delete409response" require_relative "CloudPDF/types/documents_thumbnail_response_error" require_relative "CloudPDF/types/documents_thumbnail_response" +require_relative "CloudPDF/types/folders_create200response_folder" +require_relative "CloudPDF/types/folders_create200response" +require_relative "CloudPDF/types/folders_create400response" +require_relative "CloudPDF/types/folders_create403response" +require_relative "CloudPDF/types/folders_create404response" +require_relative "CloudPDF/types/folders_create409response" +require_relative "CloudPDF/types/folders_list200response_folders_item" +require_relative "CloudPDF/types/folders_list200response" +require_relative "CloudPDF/types/folders_list400response" +require_relative "CloudPDF/types/folders_list403response" +require_relative "CloudPDF/types/folders_list404response" +require_relative "CloudPDF/types/folders_get200response_folder" +require_relative "CloudPDF/types/folders_get200response_path_item" +require_relative "CloudPDF/types/folders_get200response" +require_relative "CloudPDF/types/folders_get403response" +require_relative "CloudPDF/types/folders_get404response" +require_relative "CloudPDF/types/folders_update200response_folder" +require_relative "CloudPDF/types/folders_update200response" +require_relative "CloudPDF/types/folders_update400response" +require_relative "CloudPDF/types/folders_update403response" +require_relative "CloudPDF/types/folders_update404response" +require_relative "CloudPDF/types/folders_update409response" +require_relative "CloudPDF/types/folders_move_into400response" +require_relative "CloudPDF/types/folders_move_into403response" +require_relative "CloudPDF/types/folders_move_into404response" +require_relative "CloudPDF/types/folders_move_into409response" +require_relative "CloudPDF/types/folders_delete403response" +require_relative "CloudPDF/types/folders_delete404response" +require_relative "CloudPDF/types/folders_delete409response" require_relative "CloudPDF/types/deployment_license_status_response" -require_relative "CloudPDF/types/tokens_issue_request_doc_identity" require_relative "CloudPDF/types/tokens_issue_request_doc" -require_relative "CloudPDF/types/tokens_issue_request_tenant_scope_item_zero" -require_relative "CloudPDF/types/tokens_issue_request_tenant_scope_item_one" -require_relative "CloudPDF/types/tokens_issue_request_tenant_scope_item" require_relative "CloudPDF/types/tokens_issue_request_tenant" require_relative "CloudPDF/types/tokens_issue_request" require_relative "CloudPDF/types/tokens_issue200response" @@ -1853,12 +1888,20 @@ require_relative "CloudPDF/documents/types/list_documents_request" require_relative "CloudPDF/documents/types/get_documents_request" require_relative "CloudPDF/documents/types/delete_documents_request" +require_relative "CloudPDF/documents/types/documents_update_request" require_relative "CloudPDF/documents/types/documents_commit_request" require_relative "CloudPDF/documents/types/download_documents_request" require_relative "CloudPDF/documents/types/thumbnail_documents_request" require_relative "CloudPDF/documents/types/upload_proxy_documents_request" require_relative "CloudPDF/documents/types/documents_import_from_request" require_relative "CloudPDF/documents/types/documents_init_request" +require_relative "CloudPDF/folders/client" +require_relative "CloudPDF/folders/types/list_folders_request" +require_relative "CloudPDF/folders/types/folders_create_request" +require_relative "CloudPDF/folders/types/get_folders_request" +require_relative "CloudPDF/folders/types/delete_folders_request" +require_relative "CloudPDF/folders/types/folders_update_request" +require_relative "CloudPDF/folders/types/folders_move_into_request" require_relative "CloudPDF/tokens/client" require_relative "CloudPDF/tokens/types/issue_tokens_request" require_relative "CloudPDF/tokens/types/tokens_revoke_request" diff --git a/reference.md b/reference.md index dd3df615..9eec489a 100644 --- a/reference.md +++ b/reference.md @@ -855,6 +855,14 @@ client.shares.create(
+**identity:** `CloudPDF::Types::Identity` + +
+
+ +
+
+ **scope:** `Internal::Types::Array[String]`
@@ -1112,6 +1120,14 @@ client.shares.update(
+**identity:** `CloudPDF::Types::Identity` + +
+
+ +
+
+ **scope:** `Internal::Types::Array[String]`
@@ -1709,7 +1725,39 @@ client.documents.list(tenant_id: "tenantId")
-**state:** `CloudPDF::Documents::Types::ListDocumentsRequestState` +**state:** `CloudPDF::Documents::Types::ListDocumentsRequestState` — Only documents in this state. Without it, every state except deleting. + +
+
+ +
+
+ +**q:** `String` — Only documents whose name contains this text, ignoring case. + +
+
+ +
+
+ +**folder_id:** `String` — Only documents directly in this folder (root: the top level). Without it, documents in every folder. + +
+
+ +
+
+ +**sort:** `CloudPDF::Documents::Types::ListDocumentsRequestSort` — createdAt (default), name (ignoring case), or size (stored bytes; 0 while pending). + +
+
+ +
+
+ +**order:** `CloudPDF::Documents::Types::ListDocumentsRequestOrder` — Defaults to the reading order of the sort: A to Z for name, newest and largest first otherwise.
@@ -1786,40 +1834,650 @@ client.documents.get(
- + + +
client.documents.delete(tenant_id:, id:) -> +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```ruby +client.documents.delete( + tenant_id: "tenantId", + id: "id" +) +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `String` + +
+
+ +
+
+ +**id:** `String` + +
+
+ +
+
+ +**request_options:** `CloudPDF::Documents::RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.documents.update(tenant_id:, id:, request) -> CloudPDF::Types::DocumentsUpdate200Response +
+
+ +#### 📝 Description + +
+
+ +
+
+ +A document that is being deleted answers 404. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```ruby +client.documents.update( + tenant_id: "tenantId", + id: "id", + name: "name" +) +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `String` + +
+
+ +
+
+ +**id:** `String` + +
+
+ +
+
+ +**name:** `String` — What people call the document: shown in dashboards, searched and sorted by. 1 to 255 characters, no control characters, no leading or trailing whitespace. Names need not be unique. + +
+
+ +
+
+ +**request_options:** `CloudPDF::Documents::RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.documents.commit(tenant_id:, id:, request) -> CloudPDF::Types::DocumentsCommit200Response +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```ruby +client.documents.commit( + tenant_id: "tenantId", + id: "id", + sha256: "sha256" +) +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `String` + +
+
+ +
+
+ +**id:** `String` + +
+
+ +
+
+ +**sha256:** `String` + +
+
+ +
+
+ +**request_options:** `CloudPDF::Documents::RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.documents.download(tenant_id:, id:) -> String +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```ruby +client.documents.download( + tenant_id: "tenantId", + id: "id" +) +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `String` + +
+
+ +
+
+ +**id:** `String` + +
+
+ +
+
+ +**request_options:** `CloudPDF::Documents::RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.documents.thumbnail(tenant_id:, id:) -> String +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```ruby +client.documents.thumbnail( + tenant_id: "tenantId", + id: "id" +) +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `String` + +
+
+ +
+
+ +**id:** `String` + +
+
+ +
+
+ +**request_options:** `CloudPDF::Documents::RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.documents.upload_proxy(tenant_id:, id:, request) -> CloudPDF::Types::DocumentsUploadProxy200Response +
+
+ +#### 📝 Description + +
+
+ +
+
+ +This bounded origin-mediated fallback must only be used after documents.init returns upload.kind=proxy. Auto mode prefers a presigned object-store PUT whenever available. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```ruby +File.open("document.pdf", "rb") do |file| + client.documents.upload_proxy( + tenant_id: "tenantId", + id: "id", + file: file + ) +end +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `String` + +
+
+ +
+
+ +**id:** `String` + +
+
+ +
+
+ +**request_options:** `CloudPDF::Documents::RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.documents.import_from(tenant_id:, request) -> CloudPDF::Types::DocumentsImportFrom200Response +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Default mode is synchronous and bounded: the response returns only after the transfer verified and committed (or failed). mode=async (connection sources only) answers 202 immediately and an in-process worker performs the transfer with leased, fenced retries; poll the document until ready/failed. The deployment import policy gates scheme, network range, and size; sources must declare a length. CloudPDF copies and owns the bytes — the source is never referenced in place. A 502 marks a retryable upstream failure: retry with the same idempotencyKey to resume the same document. URL sources are capabilities and never echoed back. Connection sources name operator-registered storage (bucket/prefix scope, allowed credential classes, and tenant bindings are deployment configuration); `revision` is provider-interpreted (S3 VersionId, GCS generation, Azure version id). +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```ruby +client.documents.import_from(tenant_id: "tenantId") +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `String` + +
+
+ +
+
+ +**source:** `CloudPDF::Documents::Types::DocumentsImportFromRequestSource` — Where CloudPDF pulls the bytes from. The two shapes differ in who supplies the authority to read, not in which storage vendor holds the file. + +
+
+ +
+
+ +**expected:** `CloudPDF::Documents::Types::DocumentsImportFromRequestExpected` — Integrity pins, enforced when present. When absent, the server-observed values become authoritative. + +
+
+ +
+
+ +**name:** `String` — What people call the document: shown in dashboards, searched and sorted by. 1 to 255 characters, no control characters, no leading or trailing whitespace. Names need not be unique. + +
+
+ +
+
+ +**folder_id:** `String` — A folder id, or root for the top level. + +
+
+ +
+
+ +**metadata:** `Internal::Types::Hash[String, Object]` + +
+
+ +
+
+ +**idempotency_key:** `String` — Retrying with the same key resumes the same document rather than importing a second copy — including after a 502. + +
+
+ +
+
+ +**dedup_mode:** `CloudPDF::Documents::Types::DocumentsImportFromRequestDedupMode` — always-create (default) creates a new document every time. reuse-existing returns a document that already holds the same content instead of storing it twice. + +
+
+ +
+
+ +**doc_id:** `String` + +
+
+ +
+
+ +**mode:** `CloudPDF::Documents::Types::DocumentsImportFromRequestMode` — sync (default) holds the response open for the whole transfer. async answers 202 with the document pending and transfers in the background; it requires a connection source, and filesystem connections additionally require expected.sha256. + +
+
+ +
+
+ +**request_options:** `CloudPDF::Documents::RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.documents.init(tenant_id:, request) -> CloudPDF::Types::DocumentsInit200Response +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```ruby +client.documents.init( + tenant_id: "tenantId", + content_length: 1.1, + content_sha256: "contentSha256" +) +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `String` + +
+
+ +
+
+ +**content_length:** `Integer` + +
+
+ +
+
+ +**content_sha256:** `String` + +
+
+ +
+
+ +**name:** `String` — What people call the document: shown in dashboards, searched and sorted by. 1 to 255 characters, no control characters, no leading or trailing whitespace. Names need not be unique. + +
+
+ +
+
+ +**folder_id:** `String` — A folder id, or root for the top level. + +
+
-
client.documents.delete(tenant_id:, id:) ->
-#### 🔌 Usage +**metadata:** `Internal::Types::Hash[String, Object]` + +
+
+**idempotency_key:** `String` + +
+
+
-```ruby -client.documents.delete( - tenant_id: "tenantId", - id: "id" -) -``` -
-
+**dedup_mode:** `CloudPDF::Documents::Types::DocumentsInitRequestDedupMode` — always-create (default) creates a new document every time. reuse-existing returns a document that already holds the same content instead of storing it twice. +
-#### ⚙️ Parameters -
+**doc_id:** `String` + +
+
+
-**tenant_id:** `String` +**upload_ttl_sec:** `Integer`
@@ -1827,7 +2485,7 @@ client.documents.delete(
-**id:** `String` +**upload_preference:** `CloudPDF::Documents::Types::DocumentsInitRequestUploadPreference`
@@ -1847,7 +2505,8 @@ client.documents.delete(
-
client.documents.commit(tenant_id:, id:, request) -> CloudPDF::Types::DocumentsCommit200Response +## Folders +
client.folders.list(tenant_id:) -> CloudPDF::Types::FoldersList200Response
@@ -1860,11 +2519,7 @@ client.documents.delete(
```ruby -client.documents.commit( - tenant_id: "tenantId", - id: "id", - sha256: "sha256" -) +client.folders.list(tenant_id: "tenantId") ```
@@ -1887,7 +2542,7 @@ client.documents.commit(
-**id:** `String` +**limit:** `Integer`
@@ -1895,7 +2550,7 @@ client.documents.commit(
-**sha256:** `String` +**cursor:** `String`
@@ -1903,7 +2558,15 @@ client.documents.commit(
-**request_options:** `CloudPDF::Documents::RequestOptions` +**parent_id:** `String` — Only the folders directly in this folder (root: the top level). Without it, every folder. + +
+
+ +
+
+ +**request_options:** `CloudPDF::Folders::RequestOptions`
@@ -1915,10 +2578,24 @@ client.documents.commit(
-
client.documents.download(tenant_id:, id:) -> String +
client.folders.create(tenant_id:, request) -> CloudPDF::Types::FoldersCreate200Response +
+
+ +#### 📝 Description +
+
+
+ +409 Conflict carries `details.reason`: `name-taken` (a sibling has the name, ignoring case; `details.name`) or `too-deep` (folders nest at most 100 levels; `details.maxDepth`). 404 when the parent folder does not exist. +
+
+
+
+ #### 🔌 Usage
@@ -1928,9 +2605,9 @@ client.documents.commit(
```ruby -client.documents.download( +client.folders.create( tenant_id: "tenantId", - id: "id" + name: "name" ) ```
@@ -1954,7 +2631,7 @@ client.documents.download(
-**id:** `String` +**name:** `String` — What people call the folder: 1 to 255 characters, no control characters, no leading or trailing whitespace, and unique among the folder's siblings, ignoring case.
@@ -1962,7 +2639,15 @@ client.documents.download(
-**request_options:** `CloudPDF::Documents::RequestOptions` +**parent_id:** `String` — A folder id, or root for the top level. + +
+
+ +
+
+ +**request_options:** `CloudPDF::Folders::RequestOptions`
@@ -1974,7 +2659,7 @@ client.documents.download(
-
client.documents.thumbnail(tenant_id:, id:) -> String +
client.folders.get(tenant_id:, folder_id:) -> CloudPDF::Types::FoldersGet200Response
@@ -1987,9 +2672,9 @@ client.documents.download(
```ruby -client.documents.thumbnail( +client.folders.get( tenant_id: "tenantId", - id: "id" + folder_id: "folderId" ) ```
@@ -2013,7 +2698,7 @@ client.documents.thumbnail(
-**id:** `String` +**folder_id:** `String`
@@ -2021,7 +2706,7 @@ client.documents.thumbnail(
-**request_options:** `CloudPDF::Documents::RequestOptions` +**request_options:** `CloudPDF::Folders::RequestOptions`
@@ -2033,7 +2718,7 @@ client.documents.thumbnail(
-
client.documents.upload_proxy(tenant_id:, id:, request) -> CloudPDF::Types::DocumentsUploadProxy200Response +
client.folders.delete(tenant_id:, folder_id:) ->
@@ -2045,7 +2730,7 @@ client.documents.thumbnail(
-This bounded origin-mediated fallback must only be used after documents.init returns upload.kind=proxy. Auto mode prefers a presigned object-store PUT whenever available. +Without recursive, a folder with anything inside is refused: 409 Conflict with `details.reason` `not-empty` and what it holds, counted over every level below, in `details.folders` and `details.documents`. With recursive=true, the folder and every folder under it go at once, and every document in them stops opening, leaves every list and stops answering its share links at once; their stored files and links are removed in the background. Uploads into those folders that have not committed cannot commit.
@@ -2060,13 +2745,10 @@ This bounded origin-mediated fallback must only be used after documents.init ret
```ruby -File.open("document.pdf", "rb") do |file| - client.documents.upload_proxy( - tenant_id: "tenantId", - id: "id", - file: file - ) -end +client.folders.delete( + tenant_id: "tenantId", + folder_id: "folderId" +) ```
@@ -2089,7 +2771,7 @@ end
-**id:** `String` +**folder_id:** `String`
@@ -2097,7 +2779,15 @@ end
-**request_options:** `CloudPDF::Documents::RequestOptions` +**recursive:** `Internal::Types::Boolean` — true deletes everything in the folder too. Never the default. + +
+
+ +
+
+ +**request_options:** `CloudPDF::Folders::RequestOptions`
@@ -2109,7 +2799,7 @@ end
-
client.documents.import_from(tenant_id:, request) -> CloudPDF::Types::DocumentsImportFrom200Response +
client.folders.update(tenant_id:, folder_id:, request) -> CloudPDF::Types::FoldersUpdate200Response
@@ -2121,7 +2811,7 @@ end
-Default mode is synchronous and bounded: the response returns only after the transfer verified and committed (or failed). mode=async (connection sources only) answers 202 immediately and an in-process worker performs the transfer with leased, fenced retries; poll the document until ready/failed. The deployment import policy gates scheme, network range, and size; sources must declare a length. CloudPDF copies and owns the bytes — the source is never referenced in place. A 502 marks a retryable upstream failure: retry with the same idempotencyKey to resume the same document. URL sources are capabilities and never echoed back. Connection sources name operator-registered storage (bucket/prefix scope, allowed credential classes, and tenant bindings are deployment configuration); `revision` is provider-interpreted (S3 VersionId, GCS generation, Azure version id). +409 Conflict with `details.reason` `name-taken` when a sibling has the name, ignoring case.
@@ -2136,7 +2826,11 @@ Default mode is synchronous and bounded: the response returns only after the tra
```ruby -client.documents.import_from(tenant_id: "tenantId") +client.folders.update( + tenant_id: "tenantId", + folder_id: "folderId", + name: "name" +) ```
@@ -2159,7 +2853,7 @@ client.documents.import_from(tenant_id: "tenantId")
-**source:** `CloudPDF::Documents::Types::DocumentsImportFromRequestSource` — Where CloudPDF pulls the bytes from. The two shapes differ in who supplies the authority to read, not in which storage vendor holds the file. +**folder_id:** `String`
@@ -2167,7 +2861,7 @@ client.documents.import_from(tenant_id: "tenantId")
-**expected:** `CloudPDF::Documents::Types::DocumentsImportFromRequestExpected` — Integrity pins, enforced when present. When absent, the server-observed values become authoritative. +**name:** `String` — What people call the folder: 1 to 255 characters, no control characters, no leading or trailing whitespace, and unique among the folder's siblings, ignoring case.
@@ -2175,61 +2869,35 @@ client.documents.import_from(tenant_id: "tenantId")
-**metadata:** `Internal::Types::Hash[String, Object]` +**request_options:** `CloudPDF::Folders::RequestOptions`
- -
-
- -**idempotency_key:** `String` — Retrying with the same key resumes the same document rather than importing a second copy — including after a 502. -
-
-
-**dedup_mode:** `CloudPDF::Documents::Types::DocumentsImportFromRequestDedupMode` — always-create (default) creates a new document every time. reuse-existing returns a document that already holds the same content instead of storing it twice. -
+
+
client.folders.move_into(tenant_id:, folder_id:, request) ->
-**doc_id:** `String` - -
-
+#### 📝 Description
-**mode:** `CloudPDF::Documents::Types::DocumentsImportFromRequestMode` — sync (default) holds the response open for the whole transfer. async answers 202 with the document pending and transfers in the background; it requires a connection source, and filesystem connections additionally require expected.sha256. - -
-
-
-**request_options:** `CloudPDF::Documents::RequestOptions` - -
-
+Up to 1,000 ids in total. A folder moves with everything in it. 404 NotFound names the ids that do not exist or are being deleted in `details.documentIds` and `details.folderIds`. 409 Conflict carries `details.reason`: `cycle` (the destination is a moved folder or inside one; `details.folderId`), `too-deep` (the move would nest folders deeper than 100 levels; `details.maxDepth`) or `name-taken` (a moved folder's name is taken in the destination, ignoring case; `details.name`). - - -
- -
client.documents.init(tenant_id:, request) -> CloudPDF::Types::DocumentsInit200Response -
-
#### 🔌 Usage @@ -2240,10 +2908,9 @@ client.documents.import_from(tenant_id: "tenantId")
```ruby -client.documents.init( +client.folders.move_into( tenant_id: "tenantId", - content_length: 1.1, - content_sha256: "contentSha256" + folder_id: "folderId" ) ```
@@ -2267,47 +2934,7 @@ client.documents.init(
-**content_length:** `Integer` - -
-
- -
-
- -**content_sha256:** `String` - -
-
- -
-
- -**metadata:** `Internal::Types::Hash[String, Object]` - -
-
- -
-
- -**idempotency_key:** `String` - -
-
- -
-
- -**dedup_mode:** `CloudPDF::Documents::Types::DocumentsInitRequestDedupMode` — always-create (default) creates a new document every time. reuse-existing returns a document that already holds the same content instead of storing it twice. - -
-
- -
-
- -**doc_id:** `String` +**folder_id:** `String` — A folder id, or root for the top level.
@@ -2315,7 +2942,7 @@ client.documents.init(
-**upload_ttl_sec:** `Integer` +**document_ids:** `Internal::Types::Array[String]`
@@ -2323,7 +2950,7 @@ client.documents.init(
-**upload_preference:** `CloudPDF::Documents::Types::DocumentsInitRequestUploadPreference` +**folder_ids:** `Internal::Types::Array[String]`
@@ -2331,7 +2958,7 @@ client.documents.init(
-**request_options:** `CloudPDF::Documents::RequestOptions` +**request_options:** `CloudPDF::Folders::RequestOptions`
@@ -5164,7 +5791,7 @@ client.doc.signatures.cancel(
-`cms` is the detached CMS over the prepared digest, base64. `expectedVersion` must be what prepare returned. Idempotent by signing id: the same CMS again answers `already-completed`. Every layer of the document then sits over the new version; refetch the manifest after a completion. +`cms` is the detached CMS over the prepared digest, base64. `expectedVersion` must be what prepare returned. Idempotent by signing id: the same CMS again answers `already-completed`. The new version is the layer's own: only this layer moves to it, and the document and every other layer stay as they were. Refetch the manifest after a completion.
@@ -5380,7 +6007,7 @@ client.doc.signatures.analysis(
-Multipart: a JSON `body` part (field, subFilter, digest, contentsSize, signer, certify, lock), naming the appearance PDF it may carry as `resources: { appearance: '' }`, and that PDF as the part `resource:`. A certification (`certify.permission`) additionally requires `doc.sign.certify`. The layer is read-only until the signing completes, is cancelled, or expires (15 minutes). A layer behind the document head cannot sign (StaleBase). +Multipart: a JSON `body` part (field, subFilter, digest, contentsSize, signer, certify, lock), naming the appearance PDF it may carry as `resources: { appearance: '' }`, and that PDF as the part `resource:`. A certification (`certify.permission`) additionally requires `doc.sign.certify`. The layer is read-only until the signing completes, is cancelled, or expires (15 minutes). The signature is made over the layer's own base: the upload, or the version its last signature made.
@@ -5450,7 +6077,7 @@ client.doc.signatures.prepare(
## Doc Versions -
client.doc.versions.list(doc_id:) -> CloudPDF::Types::DocVersionsList200Response +
client.doc.versions.list(doc_id:, layer_name:) -> CloudPDF::Types::DocVersionsList200Response
@@ -5462,7 +6089,7 @@ client.doc.signatures.prepare(
-Every completed signature publishes a new version. Never cached: the list grows. +Every completed signature makes a new version of its layer; another layer's versions are never listed. Never cached: the list grows.
@@ -5477,7 +6104,10 @@ Every completed signature publishes a new version. Never cached: the list grows.
```ruby -client.doc.versions.list(doc_id: "docId") +client.doc.versions.list( + doc_id: "docId", + layer_name: "layerName" +) ```
@@ -5500,6 +6130,14 @@ client.doc.versions.list(doc_id: "docId")
+**layer_name:** `String` + +
+
+ +
+
+ **document_password:** `String` — Base64-encoded password for an encrypted document. Valid only with the API token (403 anywhere else). An encrypted document answers 422 DocPasswordRequired when the header is absent. Viewer doc JWTs use the SDK password-session flow instead.
@@ -5520,7 +6158,7 @@ client.doc.versions.list(doc_id: "docId")
-
client.doc.versions.analysis(doc_id:, sha:) -> CloudPDF::Types::DocVersionsAnalysis200Response +
client.doc.versions.analysis(doc_id:, layer_name:, sha:) -> CloudPDF::Types::DocVersionsAnalysis200Response
@@ -5532,7 +6170,7 @@ client.doc.versions.list(doc_id: "docId")
-Exactly one of `since.signature` / `since.revision`; `until=` defaults to the last. The same answer for every layer and every caller. +Exactly one of `since.signature` / `since.revision`; `until=` defaults to the last. The same answer for every caller.
@@ -5549,6 +6187,7 @@ Exactly one of `since.signature` / `since.revision`; `until=` defaults ```ruby client.doc.versions.analysis( doc_id: "docId", + layer_name: "layerName", sha: "sha" ) ``` @@ -5573,6 +6212,14 @@ client.doc.versions.analysis(
+**layer_name:** `String` + +
+
+ +
+
+ **sha:** `String`
@@ -5641,7 +6288,7 @@ client.doc.versions.analysis(
-
client.doc.versions.download(doc_id:, sha:) -> String +
client.doc.versions.download(doc_id:, layer_name:, sha:) -> String
@@ -5656,6 +6303,7 @@ client.doc.versions.analysis( ```ruby client.doc.versions.download( doc_id: "docId", + layer_name: "layerName", sha: "sha" ) ``` @@ -5680,6 +6328,14 @@ client.doc.versions.download(
+**layer_name:** `String` + +
+
+ +
+
+ **sha:** `String`
@@ -5708,7 +6364,7 @@ client.doc.versions.download(
-
client.doc.versions.revision(doc_id:, sha:, index:) -> String +
client.doc.versions.revision(doc_id:, layer_name:, sha:, index:) -> String
@@ -5723,6 +6379,7 @@ client.doc.versions.download( ```ruby client.doc.versions.revision( doc_id: "docId", + layer_name: "layerName", sha: "sha", index: 1 ) @@ -5748,6 +6405,14 @@ client.doc.versions.revision(
+**layer_name:** `String` + +
+
+ +
+
+ **sha:** `String`
@@ -5784,7 +6449,7 @@ client.doc.versions.revision(
-
client.doc.versions.signatures(doc_id:, sha:) -> CloudPDF::Types::DocVersionsSignatures200Response +
client.doc.versions.signatures(doc_id:, layer_name:, sha:) -> CloudPDF::Types::DocVersionsSignatures200Response
@@ -5799,6 +6464,7 @@ client.doc.versions.revision( ```ruby client.doc.versions.signatures( doc_id: "docId", + layer_name: "layerName", sha: "sha" ) ``` @@ -5823,6 +6489,14 @@ client.doc.versions.signatures(
+**layer_name:** `String` + +
+
+ +
+
+ **sha:** `String`
@@ -5851,7 +6525,7 @@ client.doc.versions.signatures(
-
client.doc.versions.signature_contents(doc_id:, sha:, field_key:) -> String +
client.doc.versions.signature_contents(doc_id:, layer_name:, sha:, field_key:) -> String
@@ -5880,6 +6554,7 @@ client.doc.versions.signatures( ```ruby client.doc.versions.signature_contents( doc_id: "docId", + layer_name: "layerName", sha: "sha", field_key: "fieldKey" ) @@ -5905,6 +6580,14 @@ client.doc.versions.signature_contents(
+**layer_name:** `String` + +
+
+ +
+
+ **sha:** `String`
@@ -5941,7 +6624,7 @@ client.doc.versions.signature_contents(
-
client.doc.versions.signature_digest(doc_id:, sha:, field_key:, algorithm:) -> String +
client.doc.versions.signature_digest(doc_id:, layer_name:, sha:, field_key:, algorithm:) -> String
@@ -5970,6 +6653,7 @@ What a CMS verifier compares its message digest to. ```ruby client.doc.versions.signature_digest( doc_id: "docId", + layer_name: "layerName", sha: "sha", field_key: "fieldKey", algorithm: "sha1" @@ -5996,6 +6680,14 @@ client.doc.versions.signature_digest(
+**layer_name:** `String` + +
+
+ +
+
+ **sha:** `String`