E-Seal

(0 reviews)

home

Instances

version 1.0.0

Description

API description

This API is built to Expose REST API for OSCA.

Intended Use

This API has below functionality:

No.ResourceMethodDescription
1/GETGet the system's health
2/internal-organizationsGETSearch Internal Organizations
3/internal-organizations/{organizationCode}/sealsGETGet Organization Seals
4/external-organizationsGETSearch External Organizations
5/filesPOSTUpload File
6/files/{fileKey}/word-positionsGETSearch PDF File Words Position
7/signing-configuration-tasksPOSTCreate Signing Configuration Task
8/signing-configuration-tasks/{taskId}GETGet Signing Configuration Task Detail
9/seals/{sealCode}/signersGETGet Signers of Seal
10/external-organizations/{organizationCode}/membersGETGet External Organization Members
11/flowsPOSTCreate Signing Flow
12/flowsGETGet Signing Flow
13/files/{fileKey}/contentGETDownload File

Technical details

Main Route

resources/%5Broche%5De-seal-int%5Bosca%5D-4fccac6d-0739-4586-ba2a-6c23a8aa950c.png


Interaction NoActionAPI NoMule API Endpoint
Get the system's health1/
4Search Internal Organizations2/internal-organizations
10Get Organization Seals3/internal-organizations/{organizationCode}/seals
18Search External Organizations4/external-organizations
26Upload File5/files
35Search PDF File Words Position6/files/{fileKey}/word-positions
42Create Signing Configuration Task7/signing-configuration-tasks
56Get Signing Configuration Task Detail8/signing-configuration-tasks/{taskId}
63Get Signers of Seal9/seals/{sealCode}/signers
68Get External Organization Members10/external-organizations/{organizationCode}/members
73Create Signing Flow11/flows
87Get Signing Flow12/flows
91Download File13/files/{fileKey}/content

Request Body Description:

ResourceMethodMedia Type
/filesPOSTmultipart/form-data
/signing-configuration-tasksPOSTapplication/json
/flowsPOSTapplication/json

Request Body Fields:

ResourceField NameTypeField Description
/filesfilebinary选择上传的文件
/signing-configuration-taskscallbackUrlstring签署区配置页任务的信息回调URL
fileKeysarray文件fileKey列表
fileKeys.flieKeystring文件id
signersarray待配置的签署方列表。不指定签署方时,支持用户自定义签署区名称。同一流程的签署方不允许重复
signers.userTypeinteger用户类型:1-内部,2-相对方
signers.userCodestring用户编码(本系统的唯一标识)。userType传值时,userCode与customAccountNo二选一必传;如果userCode、customAccountNo两者都有值,以userCode为准
signers.customAccountNostring用户账号(客户系统的唯一标识)。userType传值时,userCode与customAccountNo二选一必传;如果userCode、customAccountNo两者都有值,以userCode为准
signers.departmentCodestring用户所属组织编号/兼职组织编号(本系统的唯一标识),需与organizationCode、customOrgNo匹配。不传默认取所属组织编号。如果departmentCode 、customDepartmentNo 两者都有值,以departmentCode 为准。
signers.customDepartmentNostring用户所属组织编号/兼职组织账号(客户系统的唯一标识),需与organizationCode、customOrgNo匹配。不传默认取所属组织编号。如果departmentCode 、customDepartmentNo 两者都有值,以departmentCode 为准。
signers.organizationCodestring内部:用户授权企业编码(本系统的唯一标识)。不为空时,签署主体视为企业。外部:organizationCode值需和departmentCode 值保持一致如果organizationCode、customOrgNo两者都有值,以organizationCode为准。
signers.customOrgNostring内部:内部:用户授权企业账号(客户系统的唯一标识)。不为空时,签署主体视为企业。外部:customOrgNo值需和customDepartmentNo 值一致如果organizationCode、customOrgNo两者都有值,以organizationCode为准。
signers.sealTypeCodestring指定印章类型,数据来源于印控中心,默认不指定如果为企业盖章,该参数生效;取值范围:内部签署主体企业授权给经办人的印章类型;外部来源于企业下发布的印章。如果sealTypeCode、sealId两者都有值,校验二者关系
signers.sealIdstring按签署主体指定印章ID,数据来源于印控中心,默认不指定;相对方不支持指定印章id。如果sealTypeCode、sealId两者都有值,以sealId为准
signers.legalSignFlagboolean是否添加法人签署区
/flowssubjectstring流程主题
businessNostring第三方签署流程业务id
businessTypeCodestring业务类型ID从统一门户-业务模板-配置-签署方式获取“签署业务类型编码)
readCompleteinteger是否强制阅读至最后一页:0否,1是;默认为0
advertisementinteger是否开启签约须知:0否,1是;默认为0
remarkstring流程备注(长度200)
signFlowExpireTimestring签署截止日期:超过签署截止日期后流程过期。
initiatorInfoobject发起方信息集合
initiatorInfo.userTypeinteger用户类型:1-内部,传0或不传均为内部。不支持外部发起签署,不支持传其他值
initiatorInfo.userCodestring用户编码(本系统的唯一标识)。如果userCode、customAccountNo两者都有值,以userCode为准
initiatorInfo.customAccountNostring用户账号(客户系统的唯一标识)。如果userCode、customAccountNo两者都有值,以userCode为准
initiatorInfo.departmentCodestring用户所属组织编号/兼职组织编号(本系统的唯一标识),需与organizationCode、customOrgNo匹配。默认取所属组织编号。如果departmentCode 、customDepartmentNo 两者都有值,以departmentCode 为准。
initiatorInfo.customDepartmentNostring用户所属组织编号/兼职组织账号(客户系统的唯一标识),需与organizationCode、customOrgNo匹配。默认取所属组织编号。如果departmentCode 、customDepartmentNo 两者都有值,以departmentCode 为准。
initiatorInfo.organizationCodestring用户所属企业编码(本系统的唯一标识)。如果organizationCode、customOrgNo两者都有值,以organizationCode为准。企业授权:企业印章管理-制作企业印章-发布后授权用印人。
initiatorInfo.customOrgNostring用户所属企业账号(客户系统的唯一标识)。如果organizationCode、customOrgNo两者都有值,以organizationCode为准。企业授权:企业印章管理-制作企业印章-发布后授权用印人
CCInfosarray抄送方信息集合
CCInfos.userTypeinteger用户类型:1-内部,2-相对方
CCInfos.userCodestring用户编码(本系统的唯一标识)。如果userCode、customAccountNo两者都有值,以userCode为准
CCInfos.customAccountNostring用户账号(客户系统的唯一标识)。如果userCode、customAccountNo两者都有值,以userCode为准
CCInfos.departmentCodestring用户所属组织编号/兼职组织编号(本系统的唯一标识),需与organizationCode、customOrgNo匹配。默认取所属组织编号。如果departmentCode 、customDepartmentNo 两者都有值,以departmentCode 为准。
CCInfos.customDepartmentNostring用户所属组织编号/兼职组织账号(客户系统的唯一标识),需与organizationCode、customOrgNo匹配。默认取所属组织编号。如果departmentCode 、customDepartmentNo 两者都有值,以departmentCode 为准。
CCInfos.organizationCodestring用户所属企业编码(本系统的唯一标识)。如果organizationCode、customOrgNo两者都有值,以organizationCode为准。个人相对方organizationCode传 "GRXDF"(即:个人相对方首字母大写)
CCInfos.customOrgNostring用户所属企业账号(客户系统的唯一标识)。如果organizationCode、customOrgNo两者都有值,以organizationCode为准。
redirectUrlstring签署完成重定向地址
appRedirectInfoarray意愿认证完成、签署完成的APP跳转地址,支持传入不同的设备标识,实现跳转至对应设备下的APP地址。1、在app的webview.UA里注入appName(如ios、ios9、android、android12)2、签署页通过解析UA,匹配流程的appName信息:2.1、当appName识别到ios,跳转至ios对应的appSchema。2.2、当appName识别到ios9,跳转至ios9对应的appSchema。2.3、当appName识别到android,跳转至android对应的appSchema。2.4、当appName识别到android12,跳转至android12对应的appSchema。3、建议开发者在配置appSchema时,校验签署流程状态后再自行重定向至对应页面。
appRedirectInfo.appNamestringAPP设备标识
appRedirectInfo.appSchemastringAPP跳转协议
signNotifyUrlstring签署成功回调
chargingTypeinteger付费方:1:发起方、2:相对方,默认1;需要开启“相对方付费”功能后,该参数生效。
signFilesarray流程文档信息集合
signFiles.fileKeystring签署文档fileKey
signFiles.fileOrderinteger文档顺序,用于页面文档顺序显示
signFiles.qrFileinteger是否添加二维码,0否,1是;默认为0(值为1时二维码配置以接口传值为准)
signFiles.qrFileInfosobject二维码配置集合
signFiles.qrFileInfos.qrWidthinteger二维码宽度:只支持正方形二维码,宽度、长度共用一个参数,默认96 ;支持96~149(PX)之间整数
signFiles.qrFileInfos.qrViewinteger二维码查看权限:0-全部 1-流程参与人 ,默认为1
signFiles.qrFileInfos.watermarkPageinteger水印页数:1-首页 2-末页 3-所有页 默认为3
signFiles.qrFileInfos.watermarkPositioninteger水印位置:1-左上角 2-右上角 3-左下角 4-右下角 默认为1
signFiles.qrFileInfos.qrPosXintegerx偏移量:支持0-99999之间整数;默认为0
signFiles.qrFileInfos.qrPosYintegery偏移量:支持0-99999之间整数;默认为0
attachmentsarray附件信息集合
attachments.fileKeystring附件fileKey
attachments.fileOrderinteger附件顺序,用于页面文档顺序显示
signerInfosarray签署方信息集合
signerInfos.userTypeinteger用户类型:1-内部,2-相对方
signerInfos.userCodestring用户编码(本系统的唯一标识)。如果userCode、customAccountNo两者都有值,以userCode为准
signerInfos.customAccountNostring用户账号(客户系统的唯一标识)。如果userCode、customAccountNo两者都有值,以userCode为准
signerInfos.departmentCodestring用户所属组织编号/兼职组织编号,需与organizationCode匹配。默认取所属组织编号。不校验与企业的隶属关系,需校验与用户的隶属关系。
signerInfos.customDepartmentNostring【0725】用户所属组织账号/兼职组织账号(客户系统的唯一标识),需与userCode、customAccountNo匹配。默认取所属组织编号。如果departmentCode 、customDepartmentNo 两者都有值,以departmentCode 为准。不校验与企业的隶属关系,需校验与用户的隶属关系。
signerInfos.organizationCodestring企业编码(本系统的唯一标识)。不为空时,签署主体视为企业。如果organizationCode、customOrgNo两者都有值,以organizationCode为准。不校验与用户、部门的隶属关系。
signerInfos.customOrgNostring企业账号(客户系统的唯一标识)。不为空时,签署主体视为企业。如果organizationCode、customOrgNo两者都有值,以organizationCode为准。不校验与用户、部门的隶属关系。
signerInfos.autoSigninteger是否静默签署:0否,1是;默认为0;只针对内部用户,开启静默签署后会自动使用用户的印章和证书完成签署
signerInfos.legalSignFlaginteger是否添加法人签署:0否,1是;默认为0
signerInfos.signNodeinteger签署方节点顺序,最小为1。(节点顺序)
signerInfos.signModeinteger签署顺序编排模式:0-顺序签,1-无序签,2-或签,默认0
signerInfos.sealTypeCodestring指定印章类型,内部印章数据来源于印控中心,默认不指定;如果为机构盖章,该参数生效外部印章数据固定以下类型:PUBLIC :公章 CONTRACT:合同专用章 FINANCE:财务专用章 COMMON:其他
sealInfosarray签署任务信息:指定文档进行签署,未指定的文档将作为只读
sealInfos.fileKeystring签署文档fileKey
sealInfos.signConfigsarray签署位置信息;必须指定签署位置信息才可以签署
sealInfos.signConfigs.signatureTypestring指定签署印章类型:PERSON-SEAL-个人印章、COMMON-SEAL-企业授权印章、LEGAL-PERSON-SEAL-法人章
sealInfos.signConfigs.handEnableboolean是否强制手绘签名 当signatureType=PERSON-SEAL时,生效
sealInfos.signConfigs.sealIdstring印章id,需要校验用印权限;如果sealTypeCode、signatureType有值,需同时校验印章类型是否一致。
sealInfos.signConfigs.widthfloat签名域宽度,为空则取印章大小。单位:px
sealInfos.signConfigs.signTypestring签署类型: COMMON-SIGN : 普通(包含单页签、多页签), EDGE-SIGN:骑缝,KEYWORD-SIGN:关键字,默认COMMON-SIGN
sealInfos.signConfigs.edgeScopeinteger骑缝章签署范围:0-指定页(默认全选),1-奇数页,2-偶数页,默认0
sealInfos.signConfigs.keywordInfoobject关键字定位信息集合
sealInfos.signConfigs.keywordInfo.keywordstring关键字(以关键字形成的矩形区域的左下角为参考点进行定位)
sealInfos.signConfigs.keywordInfo.keywordIndexstring指定签署某个位置关键字,受页码范围控制。-1为最后一个,超过关键字总数选中最后一个
sealInfos.signConfigs.keywordInfo.offsetPosXstring关键字横坐标偏移量
sealInfos.signConfigs.keywordInfo.offsetPosYstring关键字纵坐标偏移量
sealInfos.signConfigs.pageNostring签署页码;连续页码用'-'连接,单独页码用','连接
sealInfos.signConfigs.posXstringx轴偏移量;骑缝签无视该参数
sealInfos.signConfigs.posYstringy轴偏移量
sealInfos.signConfigs.addSignDateboolean是否添加签署时间
sealInfos.signConfigs.sealSignDatePositionInfoobject签章日期信息
sealInfos.signConfigs.sealSignDatePositionInfo.sealSignDateFormatinteger签章日期时间格式,1:yyyy-MM-dd、2:yyyy年mm月dd日、3:yyyy/MM/dd,默认1
sealInfos.signConfigs.sealSignDatePositionInfo.fontSizestring签署时间字体大小,最小为5,最大为72,默认16
sealInfos.signConfigs.sealSignDatePositionInfo.posXstringx坐标
sealInfos.signConfigs.sealSignDatePositionInfo.posYstringy坐标

Response Body Fields:

ResourceField NameTypeField Description
/internal-organizationsinternalOrganizationsarray内部组织列表
customOrgNostring组织账号(客户系统的组织唯一标识)
legalRepAccountNostring法定代表人账号(客户系统的唯一标识)
legalRepNamestring法定代表人姓名
legalRepUserCodestring法定代表人编码(本系统的唯一标识)
licenseNostring证件号码
licenseTypestring证件类型,默认CREDIT_CODE;CREDIT_CODE统一社会信用代码;REGIST_NUMBER 工商注册号
namestring组织名称
organizationCodestring组织编码(本系统的组织唯一标识)
organizationTypestring分类,DEPARTMENT:部门;COMPANY:公司
parentCodestring上级组织编码(本系统的组织唯一标识)
parentNamestring上级组织名称
parentOrgNostring上级组织账号(客户系统的组织唯一标识)
/internal-organizations/{organizationCode}/sealssealsarray印章列表
sealCodestring印章编码
sealPatternstring印章形态(1-电子章 2-物理章)
sealNamestring印章名称
defaultSealstring是否为默认印章(0 不是 1是)
sealTypeNamestring印章类型名称
sealTypeCodestring印章类型编码
organizationNamestring印章所属机构名称
organizationCodestring印章所属机构code
sealStructurestring印章体结构:1-IMAGE 2-ASN_1 印章形态为电子印章时有值,物理印章时无值
sealIdstring印章Id获取.jpg .png格式图片调取接口“获取单个文件”a. 印章形态为物理印章调取接口“获取单个文件”业务类型为印章管理-企业物理印章 传值: YZGL-QYWLYZ b.印章形态为电子印章调取接口“获取单个文件”业务类型为印章管理-企业电子印章 传值: YZGL-QYDZYZ 印章形态为电子印章时有值,物理印章时无值
sealHeightnumber印章高度,单位:毫米
sealWidthnumber印章宽度,单位:毫米
sealColourstring印章颜色(1红色 2蓝色 3黑色 )
sealSourcestring制章方式(1自定义印章 2使用印章模板)
base64imgstring印章图片base64 图片
downloadUrlstring印章下载地址
sealExplainstring印章说明
sealStatusstring印章状态(g已发布)
paginationobject分页信息
pageNointeger当前页
pageSizeinteger单页数量
totalRecordsinteger印章列表数量
totalPagesinteger总页数
/external-organizationsexternalOrganizationsarray外部组织列表
customOrgNostring组织账号(客户系统的组织唯一标识)
legalRepAccountNostring法定代表人账号(客户系统的唯一标识)
legalRepNamestring法定代表人姓名
legalRepUserCodestring法定代表人编码(本系统的唯一标识)
licenseNostring证件号码
licenseTypestring证件类型,默认CREDIT_CODE;CREDIT_CODE---统一社会信用代码;REGIST_NUMBER---工商注册号
namestring组织名称
organizationCodestring组织编码(本系统的组织唯一标识)
/filesfileobject上传文件
fileKeystring文件fileKey
/files/{fileKey}/word-positionsfileobject文件id
fileKeystring文件id
keywordsarray关键字位置列表
keywordstring关键字
positionListarray位置列表
posXnumberX轴偏移量
posYnumberY轴偏移量
posNointeger关键字页码
/signing-configuration-taskssigningConfigurationTaskobject签署配置任务详情
filePreTaskIdstring签署区配置页任务id
filePreURLstring签署区配置页任务url
/signing-configuration-tasks/{taskId}signingConfigurationTaskobject签署配置任务详情
taskIdstring签署配置任务id
filePreURLstring签署区配置页URL
filePreTaskInfosarray签署区配置信息集合
userTypestring用户类型:1-内部,2-相对方
userCodestring用户编码(本系统的唯一标识)。如果userCode、customAccountNo两者都有值,以userCode为准
customAccountNostring用户账号(客户系统的唯一标识)。如果userCode、customAccountNo两者都有值,以userCode为准
departmentCodestring用户所属组织编号/兼职组织编号(本系统的唯一标识),需与organizationCode、customOrgNo匹配。默认取所属组织编号。如果departmentCode、customDepartmentNo 两者都有值,以departmentCode 为准。
customDepartmentNostring用户所属组织编号/兼职组织账号(客户系统的唯一标识),需与organizationCode、customOrgNo匹配。默认取所属组织编号。如果departmentCode、customDepartmentNo 两者都有值,以departmentCode 为准。
organizationCodestring用户授权企业编码(本系统的唯一标识)。不为空时,签署主体视为企业。如果organizationCode、customOrgNo两者都有值,以organizationCode为准。
customOrgNostring用户授权企业账号(客户系统的唯一标识)。不为空时,签署主体视为企业。如果organizationCode、customOrgNo两者都有值,以organizationCode为准。
legalSignFlagboolean是否添加法人签署:0否,1是;默认为0
sealTypeCodestring指定印章类型。印章类型为企业授权经办人的印章类型
sealInfosarray签署任务信息:指定文档进行签署,未指定的文档将作为只读
fileKeystring签署文档fileKey
signConfigsarray签署位置信息
signPosNamestring签署区名称
signatureTypestring指定签署印章类型:PERSON-SEAL-个人印章、COMMON-SEAL-企业授权印章、LEGAL-PERSON-SEAL-法人章
signTypestring签署类型: COMMON-SIGN : 普通(包含单页签、多页签), EDGE-SIGN:骑缝,KEYWORD-SIGN:关键字,默认COMMON-SIGN
sealIdstring指定印章id;signatureTpye值为PERSON-SEAL:印章id为个人发布的印章id;signatureType值为COMMON-SEAL:印章id为企业授权经办人的印章id;signatureType值为LEGAL-PERSON-SEAL:印章id为企业法人发布的印章id
edgeScopestring骑缝章签署范围:0-指定页(默认全选),1-奇数页,2-偶数页,默认0
keywordInfoobject关键字定位信息集合
offsetPosXnumber关键字横坐标偏移量
offsetPosYnumber关键字纵坐标偏移量
pageNostring签署页码:连续页码用'-'连接,单独页码用','连接
posXstringx轴偏移量;骑缝签无视该参数
posYstringy轴偏移量
addSignDateboolean是否添加签署时间
sealSignDatePositionInfoobject签章日期信息
sealSignDateFormatinteger签署日期格式:1:YYYY-MM-DD、2:YYYY年MM月DD日、3:YYYY/MM/DD,默认为1
fontSizenumber签署时间字体大小,最小为5,最大为72,默认16
posXstringx坐标
posYstringy坐标
/seals/{sealCode}/signerssealobject印章
sealCodestring印章编码(己发布的电子印章编码)
signersarray用印人列表
userCodestring用印人编码
customAccountNostring用印人账号
userNamestring用印人姓名
organizationCodestring用印人组织编码
customOrgNostring用印人组织账号
organizationNamestring用印人组织名称
paginationobject分页信息
pageNointeger当前页
pageSizeinteger单页数量
totalRecordsinteger用印人列表数量
totalPagesinteger总页数
/external-organizations/{organizationCode}/membersexternalOrganizationobject外部组织
organizationCodestring组织编码(本系统的组织唯一标识)
membersarray用户列表
userCodestring用户编码(本系统的唯一标识)
customAccountNostring用户账号(客户系统的唯一标识)
namestring用户姓名
mobilenumber手机号
emailstring邮箱
paginationobject分页信息
pageNointeger当前页
pageSizeinteger单页数量
totalRecordsinteger用户列表数量
totalPagesinteger总页数
/flows(Post)signingFlowobject签署流程信息
signFlow.signFlowIdstring签署流程id
signFlow.businessNostring第三方签署流程业务id
signFlow.signFlowStatusinteger流程状态:0-草稿,1-签署中,2-已完成,3-已过期,4-已拒签,5-已作废,6-作废中
signFlow.signFilesarray文件信息
signFlow.signFiles.fileKeystring文件fileKey
signFlow.signFiles.fileOrderinteger文档顺序,用于页面文档顺序显示
signFlow.attachmentsarray附件信息集合
signFlow.attachments.fileKeystring附件fileKey
signFlow.attachments.fileOrderinteger附件顺序,用于页面文档顺序显示
/flows (Get)signingFlowobject签署流程信息
signFlowIdstring签署流程id
businessNostring第三方业务码(长度50)
signFlowStatusinteger流程状态:0-草稿,1-签署中,2-已完成,3-已过期,4-已拒签,5-已作废,6-作废中
signFlowEndTimestring签署结束时间
signFlowCreateTimestring签署开始时间
subjectstring流程主题
businessTypeCodestring业务类型编号
remarkstring流程备注(长度200)
signNotifyUrlstring签署回调通知地址(长度500)
redirectUrlstring签署完成重定向地址(长度500)
signFlowExpireTimestring签署截止日期:超过签署有效期后流程过期
signFileFormatstring签署文件类型 pdf/ofd
initiatorInfoobject发起方信息
userCodestring发起方用户唯一标识
userTypeinteger发起方用户类型:1-内部,2-相对方
userNameobject发起方姓名
organizationCodeobject发起方所属组织编号/兼职组织编号,需与organizationCode匹配。默认取所属组织编号。
CCInfosarray抄送方信息集合
userCodestring抄送方用户唯一标识
userTypeinteger抄送方用户类型:1-内部,2-相对方
userNamestring抄送方用户名
departmentCodestring抄送方所属组织编号/兼职组织编号,需与organizationCode匹配。默认取所属组织编号。
organizationCodestring抄送方所属机构唯一标识
signFilesarray流程文档信息集合
fileKeystring签署文档fileKey
fileOrderinteger文档顺序,用于页面文档顺序显示
signedFileKeystring签署后文档fileKey,仅当流程为“2-已完成”状态时返回。
attachmentsarray附件信息集合
fileKeystring附件fileKey
fileOrderinteger文档顺序,用于页面文档顺序显示
signerInfosarray签署方信息
userCodestring签署方用户唯一标识
userNamestring签署方用户名
userTypeinteger签署方用户类型:1-内部,2-相对方
approvalFlowIdsarray签署印章审批ID
departmentCodestring签署方所属组织编号/兼职组织编号,需与organizationCode匹配。默认取所属组织编号。
organizationCodestring签署方代理的部门唯一标识
signModeinteger签署顺序编排模式:0-顺序签,1-无序签,2-或签,默认0
signNodeinteger签署方节点顺序,最小为1。
signerStatusinteger签署方状态:0-待签署,1-签署中,2-已签署,3-已拒签,4-无需签署
signDatestring签署时间
signFileDetailsarray签署文档列表
fileKeystring签署文档fileKey
fileOrderinteger文档顺序,用于页面文档顺序显示
/files/{fileKey}/contentN/Abinary下载文件

Release Notes

VersionStatusRelease DateEnd-of-Life Date
v1.0.0Released18-OCT-2023NA

Reviews