Skip to content
Product Documentation

How to use the data extraction framework to bulk download user data

Arc XP Subscriptions provides the Data Extract Framework for generating reports. The API is protected by a rate limit, which by default allows 4 requests per hour.

You can download all extracts by POSTing to the following developer API (with a valid PAT):

Terminal window
curl --location --request POST 'https://api.sandbox.staging.arcpublishing.com/retail/api/v1/extract/<extract name>' \
--header 'Authorization: Bearer {ARC_ACCESS_TOKEN}' \
--header 'Arc-Site: staging' \
--header 'Content-Type: application/json' \
--data '{
"startDate": 1727200066000,
"endDate": 1729792066000
}'

Each request is required to submit a start date and end date, which represent the time range in Unix epoch time for which you need to retrieve records for.

The extracts contain a stream of individual JSON documents rather than one single JSON document. This is due to the potential size of the extract and that the APIs cannot hold that amount in memory at the same time. To validate as JSON when loading into your system, wrap the file in [ ] (brackets), and then do a find and replace all operation, at the end of each object replacing } with }, except for the last object. The response will be in JSON and the format will be unique for each type of report.

Response from API

{"site":["theguide"],"subscriptions":[],"clientId":"abf2073a-ce5b-4dbd-bed9-941aae676427","address":[],"identity":[{"lastLogin":1728070635000,"type":"Password","createdOn":1728070635000}],"profile":{"emailVerified":true,"firstName":"PW Cassandre","lastName":"Test Stark","contact":[],"attribute":[],"email":"automation.1728070629511@gmail.com"},"sales":{"firstName":[],"lastName":[],"secondLastName":[],"createdOn":1728070635000},"status":"Active"}
{"site":["theguide"],"subscriptions":[],"clientId":"ee87743f-3157-4977-8af2-52ad60793b75","address":[],"identity":[{"lastLogin":1728070686000,"type":"Password","createdOn":1728070686000}],"profile":{"emailVerified":false,"firstName":"PW Kenyatta","lastName":"Test Green","contact":[],"attribute":[],"email":"automation.1728070682954@gmail.com"},"sales":{"firstName":[],"lastName":[],"secondLastName":[],"createdOn":1728070686000},"status":"Active"}

Making the response a valid JSON

[{"site":["theguide"],"subscriptions":[],"clientId":"abf2073a-ce5b-4dbd-bed9-941aae676427","address":[],"identity":[{"lastLogin":1728070635000,"type":"Password","createdOn":1728070635000}],"profile":{"emailVerified":true,"firstName":"PW Cassandre","lastName":"Test Stark","contact":[],"attribute":[],"email":"automation.1728070629511@gmail.com"},"sales":{"firstName":[],"lastName":[],"secondLastName":[],"createdOn":1728070635000},"status":"Active"},
{"site":["theguide"],"subscriptions":[],"clientId":"ee87743f-3157-4977-8af2-52ad60793b75","address":[],"identity":[{"lastLogin":1728070686000,"type":"Password","createdOn":1728070686000}],"profile":{"emailVerified":false,"firstName":"PW Kenyatta","lastName":"Test Green","contact":[],"attribute":[],"email":"automation.1728070682954@gmail.com"},"sales":{"firstName":[],"lastName":[],"secondLastName":[],"createdOn":1728070686000},"status":"Active"}]

Data in the extracts has limited overlap with just enough information to allow clients to (re)link records in their own systems.

If you are handling Subscriptions, the financial extract contains user IDs (UUIDs) to allow the client to link the information collected about a user to any financial transactions that they may have made. Similarly, subscriptions can be linked to both users and financial transactions via user IDs in the subscription extract and subscription IDs in the financial extract.

The following are the current reports and the extract(s) that the client should use for generating the equivalent reports in its own system.

Types of extracts

Arc XP Subscriptions has the following extracts available:

Extract nameDescription
financialOrders and financial transactions
userRegistered accounts
activityAll changes made to subscriptions and users accounts: Subscription Starts, Terminations, Renewals, etc
subscriptionSubscriptions with Payment Details
csrAuditAn audit log of CSR activities
metricsStatistics with paywall display and subscription conversions
productProducts in Retail — Available only to Commerce custumers
eventEvents in Retail — Available only to Commerce custumers
orderOrder details — Available only to Commerce custumers

In the cURL command, you need to replace <extract name> with any of the values provided in the ‘Extract Name’ column, depending on the information you’re looking for..

Possible error messages

Extracts are limited to four per hour and there are no other limits. If the limit is exceeded, you receive an HTTP 429 error response.

200311; Missing startDate
200312; Missing endDate
200313; StartDate should be before the endDate
300134; Invalid report type

Transitioning From Reports to Extracts

If you are using reports, you should consider using the extracts in place of the reports. The following are the current reports and the extract(s) that the client should use for generating the equivalent reports.

Report typereport APIExtract name
refund-auditPOST sales/api/v1/report/schedulefinancial
subscription-eventPOST sales/api/v1/report/scheduleactivity
subscription-event-v2POST sales/api/v1/report/schedulefinancial
subscription-summaryPOST sales/api/v1/report/schedulesubscription
financial-reportPOST sales/api/v1/report/schedulefinancial
financial-report-v2POST sales/api/v1/report/schedulefinancial
banco-sabadell-financial-reportPOST sales/api/v1/report/schedulefinancial
current-subscription-summaryPOST sales/api/v1/report/schedulesubscription
future-failed-paymentPOST sales/api/v1/report/schedulefinancial, subscription
whitelisted-email-domain-summaryPOST sales/api/v1/report/schedulesubscription
whitelisted-email-domain-membersPOST sales/api/v1/report/schedulesubscription
applied-price-changesPOST sales/api/v1/report/schedulesubscription
upcoming-price-changesPOST sales/api/v1/report/schedulesubscription
duplicate-vindicia-paymentsPOST sales/api/v1/report/schedulesubscription
sign-up-summaryPOST identity/api/v1/report/scheduleuser
data-exportPOST identity/api/v1/report/scheduleuser
account-activity-last-loginPOST identity/api/v1/report/scheduleuser
account-activity-last-modifiedPOST identity/api/v1/report/scheduleuser

Finantial extract

Extract name: financial

The financial extract contains a list of financial transactions, tracked by Arc XP Subscriptions, that took place between caller-specified start- and end-dates.

The caller receives a comma-separated stream of records where each record is terminated by a new line (\n). There is no formatting to the data. Each record consists of the following fields:

Field nameDescription
clientIdThe customer’s, to whom the record is attributed, client ID wrapped in double quotes.
siteThe client site to which the transaction belongs, wrapped in double quotes.
transactionDateThe epoch time (in ms) that the transaction took place.
amountThe total amount of the transaction.
currencyThe currency of the transaction.
transactionType The type of transaction. Can be one of:
  • Payment: the transaction was a payment
  • Refund: the transaction was a refund
  • GiftPayment: the transaction was a payment for a gift subscription
  • GiftRedemption: the linkedFinancialTransactionId indicates which GiftPayments this transaction relates to
taxTotal taxes charged with the transaction.
orderNumberArc’s order number associated with the transaction.
skuA comma separated list of SKUs purchased as part of the order, wrapped in double quotes.
paymentPartner The name of the payment gateway that processed the transaction.
creditCardTypeThe type of credit card used in the transaction.
subscriptionIdA comma separated list of subscription IDs that were purchased as part of the order, wrapped in double quotes.
amortizationStart For subscriptions – the start of the amortization period.
amortizationEnd For subscriptions – the end of the amortization period.
line1Address line1 wrapped in double quotes.
line2Address line2 wrapped in double quotes.
countryAddress country wrapped in double quotes.
localityAddress locality wrapped in double quotes.
region Address region wrapped in double quotes.
postalAddress postal wrapped in double quotes.
providerReferenceAn ID assigned by the payment gateway to the transaction.
taxProviderReferenceAn ID assigned by the tax gateway to the transaction.
financialTransactionIdAn ID assigned by Arc to the transaction – guaranteed to be unique and can be used for preventing duplicates inserts into client’s own database.
linkedFinancialTransactionIdLinks transactions with transaction types GiftPayment and GiftRedemption. Note: transactions of type GiftPayment will see this value update when the associated gift subscription is redeemed.
orderTypeParent (indicates a new order), Renewal (indicates that the order was for a subscription renewal)
phoneThe phone number associated with the order. As submitted by customer when creating the order.
orderEmailEmail address associated with the order. As submitted by customer when creating the order.
orderFirstNameFirst name associated with the order. As submitted by customer when creating the order.
orderLastNameLast name associated with the order. As submitted by customer when creating the order.
orderSecondLastNameSecond last name associated with the order. As submitted by customer when creating the order.
quantityNumber of items purchased.
priceThe price of an individual item.
priceCodeThe price code from Arc’s Retail system associated with the transaction.
campaignCodeThe campaign code associated with the order. As submitted by customer when creating the order.
giftIs the transaction for a gift? (boolean)
taxInclusive Were taxes calculated as inclusive?
firstSixFirst six of credit card - if available from payment gateway
lastFourLast four of credit card – if available from payment gateway
cardExpirationCredit card expiration – if available from payment gateway
cardholderNameCardholder name – if available from payment gateway
identificationIdentification number – if available from payment gateway
documentTypeType of identification – if available from payment gateway
gatewayTransactionID TransactionID provided from Payment Gateway if applicable
initialTransaction Flag to indicate first transaction of subscription
reasonCodeCustomer care ReasonCode in case of refund transaction
notesAny additional note for the transaction

User extract

Extract name: user

The user extract provides information that centers around the user. The caller must specify start- and end-dates that control how data appears in the extract based on date and time that data was first collected about the user. Note that the two extracts with the same bounding dates can look different due to users making updates.

Field NameDescription
clientIdThe customer’s, to whom the record is attributed.
siteThe client site to which the user belongs.
statusAny from [Active, Disabled, Anonymized, PendingAnonymize]
profileUser’s profile array
emailUser’s main email
emailVerifiedFlag if email is verified or not
firstNameUser’s first name
lastNameUser’s last name
secondLastNameUser’s second last name
attributeArray of user attributes
attribute:nameAttribute name
attribute:valueAttribute value
attribute:typeAttribute type [String, Number, Boolean, Date]
contactArray of user contact details
contact: phoneUser’s phone number
contact:typePhone number type
addressArray of all address types: profile, bill and shipping
address: line1Address line 1
address: line2Address line 2
address: countryAddress country
address: localityAddress locality 
address: regionAddress region
address: postalAddress postal code
identityArray of all sign-in identity’s for the user
identity: createdOnIdentity created or, in the case of a social connection, linked date
identity: lastLoginLast successful login date
identity: typeLogin type [Password, Facebook, Google, Apple, Cognito, OIDC]
salesArray of Sales contact information
sales: firstNameAll user’s first names in Sales
sales: lastNameAll user’s last names in Sales
sales: secondLastNameAll user’s second last names in Sales
sales: createdOnUser created in Sales
subscriptionsArray of Subscription IDs

Activity extract

Extract name: activity

The activity extract contains information about changes that have been made to user and subscription objects. This includes notes entered by CSRs, failed payment attempts, cancelations, and terminations.

Field nameDescription
clientIdThe customer’s, to whom the record is attributed.
siteThe client site to which the event belongs.
activityDate Activity date
note Financial/event/user note
activityType Type of activity
subscriptionIDSubscriptionID if activity belongs to a subscription
subscriptionSKUCurrent Product SKU of subscription
priceCodeCurrent price code of subscription
campaignCodeSubscription campaign code
productNameProduct name if activity was a financial event
repClidentIDCSR ID if event took place in the customer service admin
transactionIDObject unique Id for which activity created on, financial, event or user note
financialTransactionIDUnique Id from financial activity
currencyFinancial transaction currency type
amountFinancial transaction amount
taxFinancial transaction tax amount
paymentProviderPayment processor
reasonCodeCustomer care reason code
reasonValueAdditional note from activity

Subscription extract

Extract name: subscription

The subscription extract provides a list of all paid and non-paid subscriptions. All lines have SKUs while only paid subscriptions have price codes. Each record consists of the following fields:

Field nameDescription
clientIdThe customer’s ID, to whom the record is attributed.
siteThe client site to which the subscription belongs.
paymentPartnerPayment processor.
subscriptionIdSubscription ID
statusCurrent subscription status [Active, Terminated, Canceled, Suspended, Gifted, Dunning, Vindicia]
startDateSubscription created on date
terminationDateSubscription terminated on date, if subscription is in a terminated status
skuCurrent Product SKU of the subscription
creditCardLastFourLast four digit of credit card used for payment
creditCardExpirationExpiration date of credit card used for payment in MMYY format
nextEventDateNext renewal date
priceCodeCurrent price code of subscription
cycleIndexCurrent retail price cycle
group.accessCodeNonce code used by the user to get access to their group subscription
group.listNameName of the group subscription
group.packageIDGroup package ID

Audit extract

Extract name: csrAudit

The audit extract contains details of CSR sales event activity allowing clients to track actions taken by their representatives.

Field NameDescription
eventTimeUTC time when the event activity happened
csrClientIdCustomer Support Representative ID who executed the activity
siteSite for which Customer Support Representative did the activity
eventTypeActivity performed by Customer Support Representative
eventInput detail of the event like emailId, clientId, search param
csrIPIP address of Customer Support Representative
subscriptionIDSubscription ID if event is on Subscription

Paywall Metrics Extract

Extract name: metrics

The paywall metrics extract contains data on paywall views, offers, and checkout to help make business decisions that improve subscription market strategy.

Field NameDescription
eventTypeActivity performed by user: display OR sign_in OR checkout OR purchase
documentIDData on the activity: productSku, priceCode, campaignCode, offerId
paywallRuleIDPaywall rule that triggered the event to be started

Extracts that are available only to Commerce Customers

Product Extract

The product extract contains details of all product data in retail.

Field NameDescription
createdByThe id of the user who created the product
createdOnThe UTC date the product was created on
modifiedByThe ID of the user who last modified the product
modifiedOnThe UTC date the product was last modified on
idThe id of the product
namename of the product
skusku of the product
typeIdSubscription(1), Physical(2), Override(3), Event(4);
schemaCustom schema associated with the product
specificationsCustom schema of specifications associated with the product
hasVariantFlag to indicate if the product has variants
activeBoolean value to indicate if the product is in active status
defaultn/a
location.createdByThe id of the user who created the location
location.createdOnThe UTC date the location was created on
location.modifiedByThe id of the user who last modified the location
location.modifiedOnThe UTC date the location was last modified on
location.idThe id of the location for this product
location.nameThe name of the event
location.seoIdThe unique friendly ID
location.descriptionThe location description
location.statusTypeIdAvailable(1), UnAvailable(2)
location.schemaCustom schema associated with the location
location.address.createdOnThe UTC date the address was created on
location.address.modifiedOnThe UTC date the address was last modified on
location.address.idThe id of the address for the location
location.address.typeIdLocation(1)
location.address.countryThe address country
location.address.line1The address line1
location.address.line2The address line2
location.address.localityThe address locality
location.address.regionThe address region
location.address.postalThe address postal
location.address.schemaCustom schema associated with the address
subtype.createdByThe ID of the user who created the subtype
subtype.createdOnThe UTC date the subtype was created on
subtype.modifiedByThe ID of the user who last modified the subtype
subtype.modifiedOnThe UTC date the subtype was last modified on
subtype.idThe ID of the subtype associated to this product
subtype.nameName of the subtype
subtype.descriptiondescription of the subtype
subtype.slugThe unique friendly ID

Event Extract

The event extract contains details of all event data in retail.

Field NameDescription
createdByThe ID of the user who created the event
createdOnThe UTC date the event was created on
modifiedByThe id of the user who last modified the event
modifiedOnThe UTC date the event was last modified on
idThe id of the event
nameThe name of the event
dateTimeThe UTC date of the event
eventStatusIdScheduled(1), Cancelled(2), Onhold(3)
seoIdThe unique friendly ID
schemaCustom schema associated with the event
location.createdByThe id of the user who created the location
location.createdOnThe UTC date the location was created on
location.modifiedByThe id of the user who last modified the location
location.modifiedOnThe UTC date the location was last modified on
location.idThe id of the location for this event
location.nameThe name of the event
location.seoIdThe unique friendly ID
location.descriptionThe location description
location.statusTypeIdAvailable(1), UnAvailable(2)
location.schemaCustom schema associated with the location
location.address.createdOnThe UTC date the address was created on
location.address.modifiedOnThe UTC date the address was last modified on
location.address.idThe id of the address for the location
location.address.typeIdLocation(1)
location.address.countryThe address country
location.address.line1The address line1
location.address.line2The address line2
location.address.localityThe address locality
location.address.regionThe address region
location.address.postalThe address postal
location.address.schemaCustom schema associated with the address

Order Extract

The order extract contains details of all order data in sales.

Field nameDescription
orderDateThe date the order was placed
amountBase amount of the order (no tax, shipping, etc.)
currencyEx:USD
orderNumberUnique id for the order
firstNameCustomer first name
lastNameCustomer last name
phoneCustomer phone
orderIdInternal order ID
shippingShipping cost
emailCustomer email
paymentPartnerPayment provider name
statusPending(1), PartiallyPaid(2), Paid(3), Cancelled(4), AwaitingApproval(5), Approved(6), Rejected(7), Authorized(8), Declined(9), Void(10), Preauthorize(11), PreApproval(12)
subtotalBase amount of the order (no tax, shipping, etc.)
totalTotal (including tax and shipping)
totalTaxSum of taxes
billingAddress.line1The address line1
billingAddress.localityThe address locality
billingAddress.regionThe address region
billingAddress.countryThe address country
billingAddress.postalThe address postal
billingAddress.taxexemptFlag indicating if this address is tax exempt
transaction[].transactionTypePayment(1), Refund(2), GiftPayment(3), GiftRedemption(4), Authorize(5), Void(6), Error(7)
transaction[].transactionIdUnique ID for the transaction
transaction[].paymentIdPayment id for the transaction
transaction[].transactionDateDate of the transaction
transaction[].paymentPartnerPayment Provider name for the transaction
transaction[].lastFourLast four of CC
transaction[].cardTypeType of CC
transaction[].cardExpirationExpiration of CC
transaction[].amountAmount of transaction
transaction[].taxTax on transaction
transaction[].totalSum of amount and tax
orderLine[].productPriceThe price of the product purchased
orderLine[].quantityThe quantity of the product purchased
orderLine[].tax The tax of the product purchased
orderLine[].currency Ex:USD
orderLine[].productName The product name
orderLine[].productSkuThe product sku
orderLine[].subtotalQuantity x Price of this line
orderLine[].totalQuantity x Price + tax of this line
orderLine[].taxInclusiveFlag indicating if taxes apply
orderLine[].productTypeIdDigitalSubscription(1), Event(2), Merchandise(3)
orderLine[].schemaCustom schema associated with the line
orderLine[].event.nameEvent name
orderLine[].event.eventDateTimeDate of the event
orderLine[].event.categories[].nameCategory names associated with the event
orderLine[].event.location.nameLocation name of the event
orderLine[].event.location.address.countryLocation country of the event
orderLine[].event.location.address.line1Location line address of the event
orderLine[].event.location.address.line2Location line address of the event
orderLine[].event.location.address.localityLocation locality of the event
orderLine[].event.location.address.regionLocation region of the event
orderLine[].event.location.address.postalLocation postal of the event