SMARTTILE · CARRIERAUTOMATE™ · GRANITE TELECOM API

Granite tickets opened by API — no phone call

When a Granite circuit goes down, SmartTile opens the Granite repair ticket over the customer's own Granite API, then pulls Granite's status and notes into the Rev.io ticket every 30 minutes. Joey only phones Granite if the API cannot do it.

SmartTile integrates with
Granite Telecommunications' customer REST API (/customer/tickets, /customer/services) secured by Okta OAuth2 client credentials — the customer's own Granite credentials, held on their own SmartTile instance.
How SmartTile automates it
API-first (on by default): on a confirmed outage the Granite gate finds the SmartTile instance that owns the circuit, opens the ticket there with POST /customer/tickets, journals the Granite ticket number into Rev.io, and a 30-minute poller posts Granite's status and notes to Rev.io until it closes.
Category
CarrierCarrierAutomate™

Granite issues API credentials to the end customer, not to SmartChoice. So SmartTile never copies them: the customer's Granite client ID and secret stay on the customer's own SmartTile instance, and CarrierAutomate asks that instance to open or read the ticket over an SSH bridge, getting back a one-line answer. The result is a Granite repair ticket opened in seconds, with no call placed. Joey Circuits, our voice agent, is the fallback when the API genuinely fails.

What changes for a Granite circuit

The momentTodayWith SmartTile
A Granite circuit goes downSomeone calls Granite, finds the child account, reads out the circuit and the site contact.The gate opens the ticket through the owning SmartTile: summary, circuit, site address, outage time, SmartChoice reference and the on-site contact.
The ticket numberCopied by hand into the internal ticket.Written to the SmartTile carrier ticket and posted as an internal Rev.io journal: "trouble ticket … opened directly with Granite … No carrier call was placed."
Keeping up with GraniteCall back, or log in to the Granite portal.Every 30 minutes SmartTile reads Granite's status and notes and posts them to Rev.io only when something changed.
The API has a bad day—The failure is journalled and Joey calls Granite instead (fallback on by default). Each failed attempt is a strike; 10 strikes hands the ticket to a live engineer.

How it goes live

1Get credentials

The customer's Granite account team issues an Okta OAuth2 client ID and secret, the Okta token URL and the scope.

2Enter them

On the customer's own SmartTile: CarrierAutomate → Granite. Every field has an ⓘ that says what it is and where to get it.

3Test

The Data Sync Test checks which SmartTile owns the circuits, that it gets a Granite token, and reads a Granite ticket back.

4Go

API-first is on by default. SuperAdmin → Granite API shows the switches, the poller and every ticket it opened.

In production today. Granite tickets have been opened over the API for real outages, and the poller is keeping 40 Granite tickets in step with Rev.io.
SmartChoice · SmartTile CarrierAutomate™ — Granite Telecom APIPage 1 of 2
SMARTTILE · CARRIERAUTOMATE™ · GRANITE TELECOM API — WHAT SMARTTILE CALLS, AND HOW IT IS KEPT SAFE

Exactly what SmartTile calls on Granite

POST<okta token URL>grant_type=client_credentials with the Basic-auth client ID/secret
POST/customer/ticketsOpen the repair ticket (summary ≤ 100 chars + rich description)
GET/customer/tickets?status=&page[number]=Read tickets, paginated — status and notes for the poller
GET/customer/servicesGranite service inventory, for matching circuits and import
POST/customer/tickets/{id}/notesAdd a comment to a Granite ticket
PATCH/customer/tickets/{id}Update a ticket
POST/customer/tickets/{id}/escalateEscalate a ticket
POST/customer/tickets/{id}/cancelCancel a ticket
Rev.io ticket · internal journalGRANITE API

Granite API — trouble ticket 7012345 opened directly with Granite in 3,120 ms.

Circuit: 01234567 — Head Office, 123 Example St

No carrier call was placed. Status updates will be pulled from the Granite API and posted here automatically.

Granite API update — Status: In Progress. Carrier notes: technician dispatched. +30 min
Granite reports this ticket as closed/resolved. later

Security and control

Credentials never leave the customer

The client ID and secret stay on the customer's SmartTile, encrypted at rest; the access token is cached encrypted too. The platform only receives the bridge's answer.

Three switches

Granite API first (on), Fall back to Joey (on), Kill switch (off) — plus the 30-minute poller switch, all on SuperAdmin → Granite API.

Nothing lost, nothing spammed

Every journal post is audited; a note is posted only when Granite's status or notes changed; each failed API attempt counts toward the 10-strike hand-off.

Common questions

QuestionAnswer
Does SmartTile close the Granite ticket?No — closing is not part of this integration. SmartTile records when Granite reports the ticket closed.
Does Granite push updates to us?A Granite webhook is registered but has not delivered events; the 30-minute poller is the path that works, and any stored webhook delivery triggers an immediate sync.
What if the API is down?Joey phones Granite with the same data package, and the journal says why the API was not used.
The Granite ticket is open, numbered and journalled — before anyone would have finished dialling.
SmartChoice · smarttile.smartchoiceus.com · (800) 217-3096, 24×7 · verified 2026-09-28Page 2 of 2