You can access our API with the following URL:
https://api.tcgate.ch (PROD)
https://api-test.tcgate.ch (TEST)
https://api-sandbox.tcgate.ch (SANDBOX)
You can test our API with Swagger on following URL:
https://api-test.tcgate.ch/swagger/index.html (TEST)
https://api-sandbox.tcgate.ch/swagger/index.html (SANDBOX)
Every request has to be authenticated with a Bearer token using an Authorization
header in the format:
Authorization: Bearer {token}
A token will assigned to the customer during our onboarding-process [settings->onboarding].
Clients who have the password can create their own tokens for daily use. Token Generation
With Tc.gate Webhooks you can subscribe to events and get notified your application when an event happens in Tc.gate. Rather than making an API call when an event happens, Tc.gate webhooks provides this information by doing a POST request to one or more HTTPS endpoints on your server. You can subscribe the events or change the subscription by contacting your Key Account Manager.
To handle events delivered to your webhook url below requirements must be implemented within your application;
POST
requests.You can subscribe to what kind of events you want to receive. Below mentioned events are currently available for the webhooks.
ORDER
Indicates that order validation is successful.
Below is an example of event request body:
{
"tenantId":"tripoli",
"clientId":"ACME",
"eventId":"96530",
"eventType":"OrderAcceptedEvent",
"timestamp":"2022-07-29T21:24:44.3776025Z",
"metadata":{
"orderNumber":"ACME-ORDER-000-000-477-TERM"
}
}
ORDER
The order execution started.
Below is an example of event request body:
{
"tenantId":"tripoli",
"clientId":"ACME",
"eventId":"96528",
"eventType":"OrderExecutingEvent",
"timestamp":"2022-07-29T21:24:44.3776025Z",
"metadata":{
"orderNumber":"ACME-ORDER-000-000-477-TERM"
}
}
ORDER
The channel execution for an order triggered.
Below is an example of event request body:
{
"tenantId":"tripoli",
"clientId":"ACME",
"eventId":"96529",
"eventType":"OrderChannelInvocationTriggeredEvent",
"timestamp":"2022-07-29T21:24:44.3776025Z",
"metadata":{
"orderNumber":"ACME-ORDER-000-000-477-TERM",
"channel":"PRINT",
"documentNumbers":[
"DOC1",
"DOC2"
]
}
}
ORDER
The order has been executed.
Below is an example of event request body:
{
"tenantId":"tripoli",
"clientId":"ACME",
"eventId":"96527",
"eventType":"OrderExecutedEvent",
"timestamp":"2022-07-29T21:24:44.3776025Z",
"metadata":{
"orderNumber":"ACME-ORDER-000-000-477-TERM"
}
}
E-MAIL
The e-mail could not be sent because the recipient's mailbox is full, or recipient's email address or mail server are invalid or nonexistent.
Below is an example of event request body:
{
"tenantId":"tripoli",
"clientId":"ACME",
"eventId":"96521",
"eventType":"EmailBouncedEvent",
"timestamp":"2022-07-29T21:24:44.3776025Z",
"metadata":{
"emailId":"XXX",
"emailAddress":"john@doe.com",
"error":"Mailbox is full",
"orderNumber":"ACME-ORDER-000-000-477-TERM",
"documentNumbers":[
"DOC1",
"DOC2"
]
}
}
E-MAIL
The e-mail has been rejected by the recipient's mail server.
Below is an example of event request body:
{
"tenantId":"tripoli",
"clientId":"ACME",
"eventId":"96522",
"eventType":"EmailBlockedEvent",
"timestamp":"2022-07-29T21:24:44.3776025Z",
"metadata":{
"emailId":"XXX",
"emailAddress":"john@doe.com",
"error":"rejected by the recipient's mail server",
"orderNumber":"ACME-ORDER-000-000-477-TERM",
"documentNumbers":[
"DOC1",
"DOC2"
]
}
}
E-MAIL
The e-mail has been sent successfully.
Below is an example of event request body:
{
"tenantId":"tripoli",
"clientId":"ACME",
"eventId":"96523",
"eventType":"EmailSentEvent",
"timestamp":"2022-07-29T21:24:44.3776025Z",
"metadata":{
"emailId":"XXX",
"emailAddress":"john@doe.com",
"orderNumber":"ACME-ORDER-000-000-477-TERM",
"documentNumbers":[
"DOC1",
"DOC2"
]
}
}
PRINT
Defines an event where a tracked print has been delivered.
Below is an example of event request body:
{
"tenantId":"tripoli",
"clientId":"ACME",
"eventId":"96525",
"eventType":"PrintDeliveredEvent",
"timestamp":"2022-07-29T21:24:44.3776025Z",
"metadata":{
"printId":"XXXXX",
"provider":"TRENDCOMMERCE",
"trackingId":"XXXXX",
"documentNumbers":[
"DOC1",
"DOC2"
]
}
}
PRINT
Defines an event where a tracked print has not been delivered.
Below is an example of event request body:
{
"tenantId":"tripoli",
"clientId":"ACME",
"eventId":"96526",
"eventType":"PrintNotDeliveredEvent",
"timestamp":"2022-07-29T21:24:44.3776025Z",
"metadata":{
"printId":"XXXXX",
"provider":"TRENDCOMMERCE",
"trackingId":"XXXXX",
"documentNumbers":[
"DOC1",
"DOC2"
]
}
}
PRINT
Defines an event when a print job has been sent.
Below is an example of event request body:
{
"tenantId":"tripoli",
"clientId":"ACME",
"eventId":"96524",
"eventType":"PrintSentEvent",
"timestamp":"2022-07-29T21:24:44.3776025Z",
"metadata":{
"printId":"XXXXX",
"jobId":"XXX",
"orderNumber":"ACME-ORDER-000-000-477-TERM",
"shipmentId":"XXXXX",
"trackingId":"XXXXX",
"documentNumbers":[
"DOC1",
"DOC2"
]
}
}
For a successful delivery, we'll accept any 2XX status code. Any other code or message is counted as a failure, which means the retry logic will commence.
If your service (webhook url) has problems handling notifications at any time, we will attempt to re-send failed notifications for 15 minutes.
Webhook requests include a signature header so that you know the request was sent from Tc.gate. The header name is X-Tcgate-Signature
and the value is a SHA-256
encoded hash. Verifing this signature when you receive a request is strongly recommended.
To validate the webhook signature;
TCGATE_SIGNATURE=
+ request body
X-Tcgate-Signature
header:Events are not guaranteed to be delivered only once. To avoid duplicates if your endpoints receive multiple copies of a single event (by eventId
), we recommend that you make your event processing idempotent. For example, you can log processed events, and make sure that your application does not reprocess events that have already been logged.
Status Name | Type | Source | Description |
---|---|---|---|
created | Document | POST Upload Document | When the POST request sent for the document and if the pre-validation is done the document status will be marked as created and you will have response as "202 - Created". Then, the validation process runs asyncronously. |
accepted | Document | ASYNC Document Validation | Depending on result of the async validation process, the document will be marked as accepted if no findings found. |
rejected | Document | ASYNC Document Validation | Depending on result of the async validation process, the document will be marked as rejected if any findings found. |
acknowledged | PRINT / EMAIL | Postal & Email Service | Channel is defined and document is in backlog to process. |
printing | Postal Service | Document is printing. | |
sent | PRINT / EMAIL | Postal & Email Service | Documet is delivered via the selected channel. |
tracked | Postal Service | The shipment containing the document had its postal tracking information updated. Only available for documents sent via registered mail. | |
delivered | Postal Service | The shipment containing the document has been delivered successfully.Only available for documents sent via registered mail. | |
notdelivered | Postal Service | The shipment containing the document could not be delivered.Only available for documents sent via registered mail. | |
bounced | Email Service | Email is bounced. | |
blocked | Email Service | Email is blocked. |
Status Name | Type | Source | Description |
---|---|---|---|
placed | Order | POST Place Order | When the POST request sent to place an order and if the pre-validation is done the order status will be marked as placed and you will have response as "202 - Created". Then, the validation process runs asyncronously. |
accepted | Order | ASYNC Order Validation | Depending on result of the async validation process, the document will be marked as accepted if no findings found. |
rejected | Order | ASYNC Order Validation | Depending on result of the async validation process, the document will be marked as rejected if any findings found. |
scheduled | Order | ASYNC Order Processing | Order will be marked as scheduled if the "scheduleOn" is defined. |
executing | Order | ASYNC Order Processing | Order is processig via selected channel. |
executed | Order | ASYNC Order Processing | All documents linked to the order are processed. |
Postal address is for the print channel. It is required when you want to send document with following settings;
{
...
"settings":{
"print":{
"coversheet":true
...
}
}
...
}
or
{
...
"settings":{
"print":{
"bundling":true
....
}
}
...
}
or
If the document contains more than 80 pages (parcels).
Base Url | Environment | Scope | Description |
---|---|---|---|
https://api-sandbox.tcgate.ch | Sandbox | Development (Tripoli) | This is for integration and connectivity testing. The lifetime of the documents /orders is 10 minutes. It will simulate the feedback status. |
https://api-test.tcgate.ch | Test | Test/Integration (Athens) | It's for production-ready tests. E-Mails won't be send actually, if the given e-mail addresses are not whitelisted. Print will be processed if requested. |
https://api.tcgate.ch | Production | Production (Olympus) |
POST
/documents
The request should be in multipart/form-data format with a boundary between the document in binary format(application/pdf) and the document metadata(application/json).
Operation-ID | string An optional unique string used to identify the operation. If provided, the id must be unique among all operations. |
document required | string <binary> Upload document with a PDF file. | ||||||||||||||||||||||||||||||||
required | object (CreateDocumentRequest) The additional information consumed by the data of documents. | ||||||||||||||||||||||||||||||||
|
{ "type": "TERM", "clientReference": "REF-123-456-789", "settings": { "print": { "bundlingId": "RECIPIENT-123-456", "bundlingIndex": 1, "shipping": { "addressLines": [ "Bob Smith", "Zypressenstrasse 15", "8080 Zurich" ], "countryCode": "CH" }, "pages": { "type": "White", "dmcPosition": "bottom", "duplex": true, "punch": true, "folding": true, "pageDefinitions": [{ "number": 2, "type": "ESR", "plex": "front" }, { "number": 3, "plex": "front" } ] } }, "email": { "to": [ "bob.smith@work.ch" ] } } }
{ }
Returns the collection of documents matching the specified OData queryOptions
(provided as query string parameters $filter
etc.).
GET
/documents
GET
/documents?$filter={filter}&$orderby={orderby}&$top={top}&$skip={skip}
Name | Type | Required | Default | Options/Examples | Description |
---|---|---|---|---|---|
$filter | string | no | null | e.g. type eq 'TERM' and year(created) eq 2022 |
Only return documents matching the specified filter criteria. |
$orderby | string | no | null | e.g. number desc |
Order the returned documents by the specified properties. |
$top | int | no | 100 | e.g. 20 |
Return at most the specified number of documents. |
$skip | int | no | 0 | e.g. 100 |
Skip the specified number of documents and do not include them in the result. |
Name | Type | Filter Example |
---|---|---|
number | string | e.g. startswith(number, 'CUST-DOC-000-002') |
type | string | e.g. type eq 'TERM' |
status | string | e.g. status eq 'bounced' |
channel | string | e.g. channel eq 'email' |
clientReference | string | e.g. contains(clientReference, 'REF-123') |
linkedOrderNumber | string | e.g. linkedOrderNumber eq 'CUST-ORDER-000-000-326-TERM' |
created | datetime | e.g. created gt 2022-01-01T00:00:00Z or year(created) eq 2022 |
$filter | string Filters the results using OData syntax. |
$orderby | string Orders the results using OData syntax. |
$skip | string Indicates the number of results to skip. |
$top | string Indicates the number of results to return. |
{- "items": [
- {
- "number": "CUST-DOC-000-000-005-TERM",
- "type": "TERM",
- "status": "sent",
- "channel": "print",
- "clientReference": "REF-123-456-789",
- "linkedOrderNumber": "CUST-ORDER-000-000-326-TERM",
- "created": "2024-01-08T08:23:46.5945116Z",
- "lastUpdated": "2024-01-08T08:23:46.5945137Z"
}, - {
- "number": "CUST-DOC-000-000-006-TERM",
- "type": "TERM",
- "status": "rejected",
- "created": "2024-01-08T08:23:46.5945775Z",
- "lastUpdated": "2024-01-08T08:23:46.594578Z"
}
], - "count": 2,
}
GET
/documents/registered
{- "items": [
- {
- "number": "CUST-DOC-000-000-001-TERM",
- "trackingId": "98.40.302165.10000351",
- "timestamp": "2024-01-08T08:23:46.6038012Z"
}, - {
- "number": "CUST-DOC-000-000-002-TERM",
- "trackingId": "98.40.302165.10000852",
- "timestamp": "2024-01-08T08:23:46.6038722Z"
}
], - "count": 2
}
GET
/documents/bounced
{- "items": [
- {
- "number": "CUST-DOC-000-000-001-TERM",
- "recipient": "bob.smith@work.ch",
- "reason": "sender blocked",
- "timestamp": "2024-01-08T08:23:46.6074903Z"
}
], - "count": 0
}
GET
/documents/{documentNumber}
Channel | Type | Description |
---|---|---|
acknowledged | The document is being processed for printing. | |
printing | The document is printing. | |
sent | The shipment containing the document has been sent to the postal mail provider.The event metadata may contain tracking information for registered mail. | |
tracked | The shipment containing the document had its postal tracking information updated. Only available for documents sent via registered mail. | |
delivered | The shipment containing the document has been delivered successfully.Only available for documents sent via registered mail. | |
notdelivered | The shipment containing the document could not be delivered.Only available for documents sent via registered mail. | |
acknowledged | The document is being processed for emailing. | |
rejected | The document failed to be processed for emailing.The event metadata may contain additional information. | |
sent | The email containing the document has been sent to the email provider. | |
blocked | The email containing the document was rejected by the email provider. The event metadata may contain additional information. | |
bounced | The email containing the document could not be delivered.The event metadata may contain additional information. |
documentNumber required | string The number of the document. e.g. |
{- "number": "CUST-DOC-000-000-001-TERM",
- "type": "TERM",
- "status": "sent",
- "channel": "print",
- "clientReference": "REF-123-456-789",
- "events": [
- {
- "channel": "print",
- "type": "acknowledged",
- "metadata": {
- "id": "b8283799ab964e906ad408d9dc513563"
}, - "timestamp": "2024-01-08T08:23:46.6267103Z"
}, - {
- "channel": "print",
- "type": "printing",
- "metadata": {
- "shipmentId": "616073917",
- "jobId": "705267497"
}, - "timestamp": "2024-01-08T08:23:46.6267819Z"
}, - {
- "channel": "print",
- "type": "sent",
- "metadata": {
- "shipmentId": "805197",
- "jobId": "858762652",
- "enclosureType": "P",
- "shippingMethod": "A",
- "region": "CH",
- "weight": "0",
- "trackingId": "98.40.302165.10000351",
- "packagingTimestamp": "2022-01-20T20:13:00Z"
}, - "timestamp": "2024-01-08T08:23:46.6267832Z"
}
], - "linkedOrderNumber": "CUST-ORDER-000-000-326-TERM",
- "settings": {
- "print": {
- "bundlingId": "RECIPIENT-123-456",
- "bundlingIndex": 1,
- "shipping": {
- "addressLines": [
- "Bob Smith",
- "Zypressenstrasse 15",
- "8080 Zurich"
], - "countryCode": "CH"
}, - "pages": {
- "sheets": 4,
- "type": "white",
- "dmcPosition": "bottom",
- "duplex": true,
- "punch": true,
- "folding": true,
- "captureSwissQr": false,
- "pageDefinitions": [
- {
- "number": 2,
- "type": "esr",
- "plex": "front"
}, - {
- "number": 3,
- "plex": "front"
}
]
}
}, - "email": {
- "to": [
- "bob.smith@work.ch"
]
}
}, - "pdf": {
- "size": 52514,
- "pages": {
- "count": 5,
- "contents": [
- {
- "number": 1,
- "type": "white",
- "plex": "front"
}, - {
- "number": 2,
- "type": "esr",
- "plex": "front"
}, - {
- "number": 3,
- "type": "white",
- "plex": "front"
}, - {
- "number": 4,
- "type": "white",
- "plex": "back"
}, - {
- "number": 5,
- "type": "white",
- "plex": "front"
}
]
}
}, - "created": "2024-01-08T08:23:46.6271501Z",
- "lastUpdated": "2024-01-08T08:23:46.6271506Z"
}
DELETE
/documents/{documentNumber}
documentNumber required | string The number of the document. e.g. |
Operation-ID | string An optional unique string used to identify the operation. If provided, the id must be unique among all operations. |
{- "title": "Bad Request",
- "status": 400,
- "detail": "Error detail.",
- "instance": "00-0badd479a3011b4db451c16f5c8f7fda-eb0e72a4ec6e7c40-00"
}
GET
/documents/{documentNumber}/pdf
documentNumber required | string The number of the document. e.g. |
{ "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1", "title": "Bad Request", "status": 400, "detail": "Error detail.", "instance": "00-0badd479a3011b4db451c16f5c8f7fda-eb0e72a4ec6e7c40-00" }
POST
/orders
Operation-ID | string An optional unique string used to identify the operation. If provided, the id must be unique among all operations. |
experience required | string non-empty Enum: | ||||||||||||||||||||||||||||||||||||||||||||
sla required | string non-empty Examples: | ||||||||||||||||||||||||||||||||||||||||||||
scheduleOn | string or null Default: | ||||||||||||||||||||||||||||||||||||||||||||
documents required | Array of strings Example: | ||||||||||||||||||||||||||||||||||||||||||||
required | object (CreateOrderRequestSettings) Containing one or several channels with specific settings. | ||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
clientReference | string or null Default: |
{- "experience": "X-CHANNEL-EMAIL-PRINT",
- "sla": "DAILY",
- "scheduleOn": "2023-08-01",
- "documents": [
- "TRENDCOMMERCE-DOC-000-000-004-STANDARD"
], - "settings": {
- "email": {
- "from": "noreply@omnigate.ch",
- "template": "test-01-en"
}, - "print": {
- "bundling": true,
- "coversheet": true,
- "shipping": {
- "method": "R",
- "dmc": {
- "consigmentPurpose": "0",
- "information": "0000000000000000000000000",
- "postOrder": "000000",
- "returns": {
- "instruction": "6",
- "addressId": "19005693"
}
}
}
}
}, - "clientReference": "DAILY-2021-EOY"
}
{- "title": "Bad Request",
- "status": 400,
- "detail": "Error detail.",
- "instance": "00-0badd479a3011b4db451c16f5c8f7fda-eb0e72a4ec6e7c40-00"
}
Returns the collection of orders matching the specified OData queryOptions
(provided as query string parameters $filter
etc.).
GET
/orders
GET
/orders?$filter={filter}&$orderby={orderby}&$top={top}&$skip={skip}
Name | Type | Required | Default | Options/Examples | Description |
---|---|---|---|---|---|
$filter | string | no | null | e.g. type eq 'TERM' and year(created) eq 2022 |
Only return orders matching the specified filter criteria. |
$orderby | string | no | null | e.g. number desc |
Order the returned orders by the specified properties. |
$top | int | no | 100 | e.g. 20 |
Return at most the specified number of orders. |
$skip | int | no | 0 | e.g. 100 |
Skip the specified number of orders and do not include them in the result. |
Name | Type | Filter Example |
---|---|---|
number | string | e.g. startswith(number, 'CUST-DOC-000-002') |
sla | string | e.g. sla eq 'TERM' |
experience | string | e.g. experience eq 'X-CHANNEL-EMAIL-PRINT' |
status | string | e.g. status eq 'executing' |
scheduleOn | datetime | e.g. scheduleOn lt 2022-06-01T00:00:00Z or scheduleOn eq null |
clientReference | string | e.g. contains(clientReference, 'EOY') |
created | datetime | e.g. created gt 2022-01-01T00:00:00Z or year(created) eq 2022 |
$filter | string Filters the results using OData syntax. |
$orderby | string Orders the results using OData syntax. |
$skip | string Indicates the number of results to skip. |
$top | string Indicates the number of results to return. |
{- "items": [
- {
- "number": "CUST-ORDER-000-000-005-TERM",
- "experience": "PRINT",
- "sla": "TERM",
- "status": "executing",
- "clientReference": "TERM-2021-EOY",
- "created": "2024-01-08T08:23:46.6573461Z",
- "lastUpdated": "2024-01-08T08:23:46.657348Z"
}, - {
- "number": "CUST-ORDER-000-000-006-TERM",
- "experience": "X-CHANNEL-EMAIL-PRINT",
- "sla": "TERM",
- "status": "accepted",
- "scheduleOn": "2024-01-08T08:23:46.6574255Z",
- "clientReference": "TERM-2021-EOY",
- "created": "2024-01-08T08:23:46.6574594Z",
- "lastUpdated": "2024-01-08T08:23:46.6574597Z"
}
], - "count": 2,
}
GET
/orders/{orderNumber}
Response Body Events
Channel | Type | Description |
---|---|---|
processed | The order has been processed via the print channel for the documents indicated. | |
processed | The order has been processed via the email channel for the documents indicated. |
orderNumber required | string The number of the order. e.g. |
{- "number": "CUST-ORDER-000-000-001-TERM",
- "experience": "PRINT",
- "sla": "TERM",
- "status": "executing",
- "clientReference": "TERM-2021-EOY",
- "events": [
- {
- "channel": "print",
- "type": "processed",
- "documents": [
- "CUST-DOC-000-000-001-TERM"
], - "timestamp": "2024-01-08T08:23:46.6716986Z"
}
], - "documents": [
- "CUST-DOC-000-000-001-TERM"
], - "settings": {
- "print": {
- "bundling": true,
- "coversheet": true,
- "shipping": {
- "method": "R",
- "dmc": {
- "consigmentPurpose": "0",
- "information": "0000000000000000000000000",
- "postOrder": "000000",
- "returns": {
- "instruction": "6",
- "addressId": "19005693"
}
}
}, - "supplements": [ ]
}
}, - "scheduleOn": "2022-08-01",
- "created": "2024-01-08T08:23:46.6719595Z",
- "lastUpdated": "2024-01-08T08:23:46.67196Z"
}
PATCH
/orders/{orderNumber}
Below is example of an order rescheduling request body:
{
"scheduleOn": "2021-09-21T12:05:00.511Z"
}
orderNumber required | string The number of the order |
Operation-ID | string An optional unique string used to identify the operation. If provided, the id must be unique among all operations. |
scheduleOn | string or null |
{- "scheduleOn": "2021-09-21T12:05:00.511Z"
}
{- "title": "Bad Request",
- "status": 400,
- "detail": "Error detail.",
- "instance": "00-0badd479a3011b4db451c16f5c8f7fda-eb0e72a4ec6e7c40-00"
}
DELETE
/orders/{orderNumber}
orderNumber required | string The number of the order. e.g. |
Operation-ID | string An optional unique string used to identify the operation. If provided, the id must be unique among all operations. |
{- "title": "Bad Request",
- "status": 400,
- "detail": "Error detail.",
- "instance": "00-0badd479a3011b4db451c16f5c8f7fda-eb0e72a4ec6e7c40-00"
}
Returns the collection of documents for the order with the specified order number.
GET
/orders/{orderNumber}/documents
orderNumber required | string The number of the order. e.g. |
{- "items": [
- {
- "number": "CUST-DOC-000-000-005-TERM",
- "type": "TERM",
- "status": "sent",
- "channel": "print",
- "clientReference": "REF-123-456-789",
- "linkedOrderNumber": "CUST-ORDER-000-000-326-TERM",
- "created": "2024-01-08T08:23:46.6803465Z",
- "lastUpdated": "2024-01-08T08:23:46.6803473Z"
}, - {
- "number": "CUST-DOC-000-000-006-TERM",
- "type": "TERM",
- "status": "rejected",
- "created": "2024-01-08T08:23:46.6803476Z",
- "lastUpdated": "2024-01-08T08:23:46.6803477Z"
}
], - "count": 2,
}
POST
/token/generateToken
Below is example of generating token request body:
{
"ClientId": "ABC123",
"Secret": "Ab!c12dD34",
"Tenant": "Tripoli"
}
Operation-ID | string An optional unique string used to identify the operation. If provided, the id must be unique among all operations. |
clientId required | string^[a-zA-Z0-9]{1,6}$ Example: |
Secret required | string <password> Example: |
Tenant required | string Example: |
{- "clientId": "ABC123",
- "bearerToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnQiOiAiQUJDMTIzIiwidGVuYW50IjoiVGVuYW50MSIsInJvbGUiOiAiQWRtaW5pc3RyYXRvciIsImVudiI6ICJEZXZlbG9wbWVudCIsImlhdCI6MTY0OTg3MzEyNSwiZXhwIjoxNjUwMTMzMzI1LCJpc3MiOiAidGMiLCJhdWQiOiAiYXBpIn0._1n8QTpYfsn9EqM04db2DukvL8_3BhJECwHBE1kiPF4",
- "validTo": "2024-01-08T08:23:46.6856892Z"
}