Skip to content

Automatic notification of migration using webhooks integration

Migration Center is able to send notifications to customer applications when it fully migrates a document to Arc XP. The notification occurs when you register a webhook URL with Migration Center’s webhook registration service. If the webhook setting is enabled for an organization, Migration Center sends a message to the URL when an ingested document of any content type reaches one of the following statuses:

  • Success

  • Circulated

  • Published

  • Scheduled

  • FailVideo

  • FailImage

  • FallStory

  • FailGallery

  • FailAuthor

  • FailTag

The webhook registration service lets you create and update a webhook with Migration Center. You can create and update a webhook through HTTP calls as the following code samples illustrate.

Creating a webhook in Migration Center

curl --location --request POST 'https://api.{org}.arcpublishing.com/migrations/v3/webhook' \
--header 'Authorization: Bearer <INSERT YOUR ARC BEARER TOKEN HERE' \
--header 'Content-Type: application/json' \
--data-raw '{
"endpoint":"https://api.{{org}}.arcpublishing.com/notify/stage/bug_bush_3_3",
"authToken":" <INSERT YOUR WEBHOOK BEARER TOKEN HEREl",
"isEnabled":true,
"headers":{
"Accept-Language":"en-US"
},
"subscriber": "sandbox_webhook_1"
}'

The POST request sent to the /migrations/v3/webhook endpoint requires an authorization token and a Content-type header as is the case with any other API endpoints within Migration Center. The request payload must contain the following properties:

Request Body PropertyProperty DescriptionRequired
endpointThe customer’s webhook API endpoint. This endpoint must support a POST operation.Yes
authTokenThe authorization token to secure calls to the customer’s webhook endpoint.Yes
isEnabledA boolean value to start and stop notifications to the webhook APINo
headersA dictionary of any HTTP headers that are required to passed in the request to the customer’s webhook endpoint. If no headers are required, this property can be ignored.No
subscriberThe name of the webhook in the case where you maintain multiple webhooks with Migration Center. Passing the subscriber name in the POST /ans or POST /ans/bulk API call links the ANS documents in the POST call to a particular webhook integration on the client side. Migration Center calls the webhook that matches the subscriber name.Yes

The current max limit of webhooks per Arc XP organization is five, and Migration Center rejects any additional attempts to register more webhooks with the following error response:

{
"success": false,
"message": "Max items exceeded for entity 'Webhooks'. This entity has a limit of 5."
}

Updating a webhook in Migration Center

curl --location --request PATCH 'https://api.{org}.arcpublishing.com/migrations/v3/webhook/1' \
--header 'Authorization: Bearer <INSERT YOUR ARC BEARER TOKEN HERE>' \
--header 'Content-Type: application/json' \
--data-raw '{
"isEnabled":false
}'

You can update the webhook through a PATCH call to the webhook registration service as shown in the previous sample and passing in the ID returned in the API response to the POST /migrations/v3/webhook call. This process lets you update your authorization tokens when they are recycled or disable notifications from Migration Center.

Getting a list of all webhooks in Migration Center

curl --location --request GET 'https://api.{org}.arcpublishing.com/migrations/v3/webhook' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <INSERT YOUR ARC BEARER TOKEN HERE>' \
--data-raw ''

Sample response:

{
"hasMore": false,
"webhooks": [
{
"id": 1,
"endpoint": "https://api.{org}.arcpublishing.com/migrations/v3/mywebhookapi",
"headers": {
"Content-Type": "application/json"
},
"isEnabled": true,
"createDate": "2022-12-08T17:33:56.990Z",
"updateDate": "2022-12-08T17:44:20.804Z",
"subscriber": "test"
}
]
}

Using the subscriber to link a POST /ans request to a specific webhook

In the case where your application maintains multiple webhooks with Migration Center, you can use the subscriber name to match specific migration records to webhooks. Passing the subscriber name in the POST /ans or POST /ans/bulk API call links the ANS documents in the POST call to a particular webhook integration on the client side. Migration Center calls the webhook that matches the subscriber name.

{
"tags": {
"webhookSubscriber": "sandbox_webhook_1"
},
"ANS": {...}
}

Notification message by Migration Center to the webhook

If a webhook has been registered and its isEnabled setting is set to true, Migration Center posts a message to the webhook URL using the authorization token and HTTP headers provided during registration, when an ingested document reaches a terminal status. You can find the list of statuses at the beginning of this section. The POST message payload looks something like the following code sample and includes the ansId, ansType, and status of the migrated document, along with the document’s metadata.

"record": {
"id": 229338,
"sourceLocation": null,
"sourceAdditionalProperties": null,
"ansId": "T3GBOT63EBA4JGFU4RPTCQPK4Q",
"ansType": "author",
"ansLocation": "{org}/stage/author/7fc2b6cb-badb-438a-8d13-8ec8d9fde628/ans.json",
"status": "Circulated",
"website": null,
"operations": null,
"circulationLocation": "{org}/stage/author/7fc2b6cb-badb-438a-8d13-8ec8d9fde628/circulations.json",
"createDate": "2022-12-07T19:49:00.157Z",
"updateDate": "2022-12-07T19:49:00.157Z",
"errorMessage": null,
"priority": "historical",
"arcAdditionalProperties": null,
"groupId": null
}