Cegid
Returns a summary of the receipt: items (one { label, quantity, price } per line, the price being the tax-included unit price), date, customerId (the Y2 customer id), currencyId and total (tax included), amounts as Y2 holds them.
Y2 key of the receipt, as {stump}-{number}, e.g. ST202-1409. The number is the digits
after the last -; anything else is refused with 400.
(?<Stump>.*)-(?<Number>\d+)External reference of the receipt in Y2; 404 when no receipt has it.
Receipt returned.
The receipt is not designated by exactly one valid identifier.
The sandbox is not enabled for the tenant.
Cegid Y2 is not configured for this tenant, or no receipt has the external reference.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
GET /api/{tenantId}/admin/extensions/cegid/y2/sandbox HTTP/1.1
Host: app.neostore.cloud
Accept: */*
No content
Attach a Y2 receipt to a customer
Finds the Y2 customer with the email, or creates one, then sets that customer on the receipt in Y2, through the default Y2 connection. A created customer gets firstName and lastName from the body; when absent, they are derived from the part of the email before @: jane.doe@… gives jane and doe, a part without a dot is used for both.
Y2 key of the receipt, as {stump}-{number}, e.g. ST202-1409. The number is the digits
after the last -; anything else is refused with 400.
(?<Stump>.*)-(?<Number>\d+)External reference of the receipt in Y2; 404 when no receipt has it.
Customer found or created and attached to the receipt.
The receipt is not designated by exactly one valid identifier, or the body has no
email string, or a firstName or lastName that is not a string.
The caller is not authenticated.
The caller lacks the tenant.y2.listener:write scope, or the sandbox is not enabled for the tenant.
Cegid Y2 is not configured for this tenant, or no receipt has the external reference.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
Cegid Y2 refused to attach the customer to the receipt.
POST /api/{tenantId}/admin/extensions/cegid/y2/sandbox/attachReceiptToCustomer HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
textThe civilities defined in Y2, as Y2 returns them. A customer's title is sent to Y2 as a civility id.
Civilities returned.
No content
The caller is not authenticated.
The caller lacks the tenant.y2.settings:read scope.
Cegid Y2 is not configured for this tenant.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
GET /api/{tenantId}/admin/extensions/cegid/y2/settings/civilities HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
No content
One entry per Y2 country, carrying id, languageId, shortDescription, description, currencyId, nationality, isoCode (isO3NumCode, isO2AlphaNumCode, isO3AlphaNumCode; null when Y2 has none) and regions, the Y2 regions whose countryId is the country's id. A customer's country is sent to Y2 as the ISO alpha-2 code.
Countries and regions returned.
No content
The caller is not authenticated.
The caller lacks the tenant.y2.settings:read scope.
Cegid Y2 is not configured for this tenant.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
GET /api/{tenantId}/admin/extensions/cegid/y2/settings/countries HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
No content
Verify country ISO code uniqueness
Finds the ISO alpha-2 codes shared by several Y2 countries. Customers' countries are sent to Y2 as ISO alpha-2 codes, so such a code is ambiguous for Y2. Only the alpha-2 code is checked; countries without one are left out.
The body is { "duplicatedCountries": { "simpleData": [...], "fullData": [...] } }: simpleData holds one { iso2, values: [{ id, shortDescription }] } per shared code, and fullData one array of complete Y2 countries per shared code, in the same order. Both are empty when every code is unique.
Report returned, possibly empty.
No content
The caller is not authenticated.
The caller lacks the tenant.y2.settings:read scope.
Cegid Y2 is not configured for this tenant.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
GET /api/{tenantId}/admin/extensions/cegid/y2/settings/countries/test HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
No content
The languages defined in Y2, as Y2 returns them.
Languages returned.
No content
The caller is not authenticated.
The caller lacks the tenant.y2.settings:read scope.
Cegid Y2 is not configured for this tenant.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
GET /api/{tenantId}/admin/extensions/cegid/y2/settings/languages HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
No content
Returns every Y2 store as Y2 sends it, unpaged and unfiltered.
Stores returned.
No content
The caller is not authenticated.
The caller lacks the tenant.y2.store:read scope.
Cegid Y2 is not configured for this tenant.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
GET /api/{tenantId}/admin/extensions/cegid/y2/stores HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
No content
Where LiveStore sends the associate's browser. Redirects to the tenant's LiveStore customer form, opened for the session's customer, passing on every other query parameter. In tablet mode, the form opens in tablet mode.
A storeId value of the form 530?sessionId=xxx is read as storeId=530 and sessionId=xxx.
No sessionId was sent (connection check); nothing is done.
No content
Redirect to the customer form.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
LiveStore is enabled but not configured for this tenant.
GET /api/{tenantId}/external/livestore HTTP/1.1
Host: app.neostore.cloud
Accept: */*
No content
Lets LiveStore check, with GET or HEAD, that the session endpoint is reachable. Has no effect.
The endpoint is reachable.
No content
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
GET /api/{tenantId}/external/livestore/session HTTP/1.1
Host: app.neostore.cloud
Accept: */*
No content
Called by Cegid LiveStore before it sends the associate to the form. The session is valid for one hour from this call; posting again under the same sessionId replaces the customer and restarts the hour. An expired session no longer opens the form.
Identifier LiveStore chose for the session; the form is later opened with it. Required.
Store the session is opened in. When sent, replaces storeId of the body.
The customer a Cegid LiveStore session is opened for.
Base URL of the LiveStore instance that opened the session. Once the holder's account is saved, the form
redirects to {callbackUrl}/customers/{customerId}.
Identifier of the customer in the retail system LiveStore works with (Y2 or UR, per the tenant's LiveStore
configuration). Set on the account as id.y2.customerId or id.ur.customerId;
when absent, the account gets no customer identifier from the session.
Store the session is opened in. The storeId query parameter, when sent, replaces it.
Session stored.
No content
sessionId or callbackUrl is missing.
The caller is not authenticated.
The caller lacks the tenant.livestore.access:write scope.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
POST /api/{tenantId}/external/livestore/session HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 92
{
"callbackUrl": "text",
"customerId": null,
"storeId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}No content
Lets LiveStore check, with GET or HEAD, that the session endpoint is reachable. Has no effect.
The endpoint is reachable.
No content
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
HEAD /api/{tenantId}/external/livestore/session HTTP/1.1
Host: app.neostore.cloud
Accept: */*
No content
List the Y2 business notification subscriptions
Returns every subscription Y2 reports as active for the connection's database, this platform's own included, to check where Y2 sends its notifications.
name of the Y2 connection whose database is read.
Subscriptions returned, possibly none.
A Y2 business notification subscription: where Y2 sends its notifications for a database, and which ones.
Whether Y2 currently delivers to this subscription. Registering this platform's subscription disables another enabled one.
Y2 identifier of the subscription.
Name of the subscription in Y2.
URL Y2 posts the notifications to. For this platform's subscription, it ends with
/api/{tenantId}/webhooks/listeners/cegid/{connection name}.
The caller is not authenticated.
The caller lacks the tenant.y2.listener:read scope.
Cegid Y2 is not configured for this tenant, or no Y2 connection has this name.
The connection has no business notification credentials; set
businessNotificationSettings.webServiceCredentials in the Cegid Y2 configuration.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
GET /api/{tenantId}/webhooks/listeners/cegid/{connectionId} HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"enabled": true,
"id": "text",
"name": "text",
"url": "text",
"headers": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"user": {
"userName": null
},
"filters": [
{
"eventSources": [
"text"
],
"userIds": [
"text"
],
"action": 0
}
]
}
]Called by Y2. Header.EventSource decides the handling; each recognised notification is re-emitted as a platform event: …ThirdParties.Customers.ICustomerService.Create: Y2:BusinessNotification:CustomerCreated; passes are not updated.…ThirdParties.Customers.ICustomerService.Update: Y2:BusinessNotification:CustomerUpdated; the passes whose y2.customerId identifier is Body.Key.CustomerId are updated.…ISaleAndSellersService.CreateReceipt, …Engine.RegisterSale, …Documents.Sales.ISaleService.Create and …ManagementService.CreateFrom: Y2:BusinessNotification:ReceiptCreated; the passes of the sale document's customer are updated. A receipt on hold updates no pass. Body.Key may be wrapped in a second Key.…ILoyaltyEngineService.AddCardOperations: Y2:BusinessNotification:LoyaltyUpdated; the passes of the card's customer are updated.Any other source: Y2:BusinessNotification:Generic, with the body untouched. Body properties are matched case-insensitively.
name of the Y2 connection the subscription was registered for.
A Y2 business notification: what happened, and the key of the entity it happened to.
See . A new GUID when the event is raised.
See . The current UTC time when the event is raised. Accepts ISO 8601 date-time string or Unix epoch seconds in request inputs. Responses are serialized as ISO 8601 date-time strings.
Key of the entity the notification is about, under Key. Its shape depends on
Header.EventSource.
Notification accepted and its event emitted.
No content
The body cannot be read as the shape its event source requires.
The caller is not authenticated.
The caller lacks the tenant.y2.listener:write scope.
Cegid Y2 is not configured for this tenant, or no Y2 connection has this name.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
POST /api/{tenantId}/webhooks/listeners/cegid/{connectionId} HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 230
{
"__id": "text",
"__creationDate": "2026-01-01T00:00:00.000Z",
"__eventName": "text",
"Header": {
"EventId": "text",
"EventSource": "text",
"ContentType": "text",
"SourceId": "text",
"UserId": "text",
"Date": "2026-01-01T00:00:00.000Z"
},
"Body": null
}No content
Register the Y2 business notification subscription
Makes Y2 push its business notifications for the connection's database to this platform. As Y2 delivers to a single subscription, another enabled subscription on that database is disabled. This platform's subscription is created or updated to call …/webhooks/listeners/cegid/{connectionId}. Saving the Cegid Y2 configuration does the same for every connection with listenToBusinessNotification.
name of the Y2 connection to register the subscription for.
Subscription registered.
No content
The caller is not authenticated.
The caller lacks the tenant.y2.listener:write scope.
Cegid Y2 is not configured for this tenant, or no Y2 connection has this name.
The connection has no business notification credentials; set
businessNotificationSettings.webServiceCredentials in the Cegid Y2 configuration.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
POST /api/{tenantId}/webhooks/listeners/cegid/{connectionId}/Register HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
No content
Last updated

