{
    "grafika": "satellite",
    "manifest_version": 1,
    "generated_at": "2026-10-13T22:58:33+03:00",
    "satellite": {
        "id": "sat_40f81fbcf6038caed945",
        "software": "grafika-satellite-php",
        "version": "0.2.0",
        "base_url": "https://grafika.jotters.me",
        "hub": {
            "url": null,
            "listed": false
        }
    },
    "business": {
        "name": "Example Studio",
        "legal_name": "Example Studio Ltd.",
        "tagline": "Appointments, classes and events",
        "description": "A short description shown in apps that list this business.",
        "category": [
            "wellness"
        ],
        "website": "https://example.com",
        "logo": null,
        "phone": "+359 2 123 4567",
        "email": "hello@example.com",
        "address": {
            "street": "1 Example Street, floor 2",
            "city": "Sofia",
            "postal_code": "1000",
            "region": null,
            "country": "BG"
        },
        "geo": {
            "lat": 42.6977,
            "lng": 23.3219
        },
        "map_url": "https://www.google.com/maps/search/?api=1&query=1%20Example%20Street%2C%20floor%202%2C%20Sofia%2C%20BG",
        "opening_hours": [
            {
                "days": [
                    "mon",
                    "tue",
                    "wed",
                    "thu",
                    "fri"
                ],
                "open": "09:00",
                "close": "18:00"
            }
        ],
        "social": {},
        "privacy_url": null,
        "terms_url": null,
        "place": "center",
        "main": "store",
        "remote-work": true,
        "remote-only": false,
        "area": [
            "Sofia"
        ],
        "country": [
            "BG"
        ]
    },
    "places": [
        {
            "name": "center",
            "title": "Example Studio",
            "main": true,
            "kind": "store",
            "address": {
                "street": "1 Example Street, floor 2",
                "city": "Sofia",
                "postal_code": "1000",
                "region": null,
                "country": "BG"
            },
            "geo": {
                "lat": 42.6977,
                "lng": 23.3219
            },
            "map_url": "https://www.google.com/maps/search/?api=1&query=1%20Example%20Street%2C%20floor%202%2C%20Sofia%2C%20BG",
            "directions": [
                "1 Example Street, building B",
                "Entrance from the parking side, intercom 12",
                "Floor 2, office 24"
            ],
            "opening_hours": [
                {
                    "days": [
                        "mon",
                        "tue",
                        "wed",
                        "thu",
                        "fri"
                    ],
                    "open": "09:00",
                    "close": "18:00"
                }
            ],
            "phone": "+359 2 123 4567",
            "email": "hello@example.com",
            "website": "https://example.com",
            "social": {},
            "area": "Sofia",
            "booking": {
                "enabled": true,
                "self": true
            },
            "events": {
                "enabled": true
            },
            "payment": null,
            "colors": null
        },
        {
            "name": "lozenets",
            "title": "Example Studio Lozenets",
            "main": false,
            "kind": "store",
            "address": {
                "street": "15 Cherni Vrah Blvd",
                "city": "Sofia",
                "postal_code": "1407",
                "region": null,
                "country": "BG"
            },
            "geo": {
                "lat": 42.6741,
                "lng": 23.3196
            },
            "map_url": null,
            "directions": [
                "Ground floor, next to the pharmacy"
            ],
            "opening_hours": [
                {
                    "days": [
                        "tue",
                        "thu",
                        "sat"
                    ],
                    "open": "10:00",
                    "close": "16:00"
                }
            ],
            "phone": "+359 2 765 4321",
            "email": "lozenets@example.com",
            "website": null,
            "social": {
                "instagram": "https://instagram.com/example.lozenets"
            },
            "area": "Lozenets",
            "booking": {
                "enabled": true,
                "self": true
            },
            "events": {
                "enabled": false
            },
            "payment": {
                "cash": {
                    "accepted": true,
                    "coins": true,
                    "banknotes_up_to": null
                },
                "on_site": {
                    "cards": [
                        "Visa",
                        "MstrCard"
                    ],
                    "contactless": [
                        "Tap",
                        "ApplePay"
                    ],
                    "providers": [
                        "Fibank"
                    ]
                },
                "terminals": [
                    {
                        "where": "on_site",
                        "provider": "Fibank",
                        "cards": [
                            "Visa",
                            "MstrCard"
                        ],
                        "contactless": [
                            "Tap",
                            "ApplePay"
                        ]
                    },
                    {
                        "where": "online",
                        "provider": "UniCredit Bulbank",
                        "cards": [
                            "Visa",
                            "MstrCard"
                        ],
                        "contactless": [
                            "GooglePay",
                            "ApplePay"
                        ]
                    }
                ],
                "banks": [
                    {
                        "bank": "Example Bank",
                        "bic": null
                    }
                ]
            },
            "colors": {
                "primary": "#3A5F1F"
            }
        }
    ],
    "legal": {
        "name": "Example Studio Ltd.",
        "business_id": "000695406",
        "vat_id": null,
        "address": {
            "street": "1 Example Street",
            "city": "Sofia",
            "postal_code": "1000",
            "region": null,
            "country": "BG"
        }
    },
    "geolock": null,
    "locale": {
        "languages": [
            "en",
            "bg",
            "de",
            "ru",
            "pl"
        ],
        "default_language": "en",
        "timezone": "Europe/Sofia",
        "currency": "EUR",
        "currency_symbol": "€",
        "phone_country_code": "359"
    },
    "branding": {
        "colors": {
            "primary": "#1F3A5F",
            "primary-mid": "#18304F",
            "primary-deep": "#10223A",
            "bg": "#F3F0E9",
            "bg-soft": "#FBFAF6",
            "accent": "#DDEAE4",
            "accent-mid": "#A8C9BC",
            "muted": "#4F6B5E",
            "link": "#2F6DB5",
            "highlight": "#C08A2E",
            "highlight-soft": "#E6C27A",
            "ink": "#1B232C",
            "ink-soft": "#45515E"
        },
        "fonts": {
            "heading": "'Cormorant Garamond',Georgia,serif",
            "body": "'Source Sans 3','Segoe UI',system-ui,sans-serif"
        }
    },
    "features": {
        "bookings": true,
        "events": true,
        "event_signup": true,
        "services_catalog": true,
        "passkeys": true,
        "email_code_sign_in": true,
        "phone_code_sign_in": true,
        "gdpr_self_service": true,
        "front_template": true,
        "coupons": true,
        "self_booking": true,
        "hub_single_sign_on": false
    },
    "policies": {
        "cancel_hours": 24,
        "access_code_length": 4,
        "gdpr_wait_hours": 48
    },
    "web": {
        "portal": "https://grafika.jotters.me/",
        "sign_in": "https://grafika.jotters.me/login",
        "events": "https://grafika.jotters.me/events",
        "event": "https://grafika.jotters.me/events/{id}",
        "record": "https://grafika.jotters.me/{number}",
        "login_link": "https://grafika.jotters.me/login/{token}",
        "staff": "https://grafika.jotters.me/admin/"
    },
    "templates": {
        "format": "gut",
        "version": 1,
        "front": "https://grafika.jotters.me/templates/front.gut",
        "core": {
            "url": "https://grafika.jotters.me/templates/core.gut",
            "etag": "a001bf4fc9f1d518"
        },
        "pages": []
    },
    "catalogs": [
        {
            "id": "main",
            "name": "Services",
            "file": "main",
            "url": "https://grafika.jotters.me/services/main.gsk",
            "items": 3
        }
    ],
    "booking": {
        "self": true,
        "who": "Clients",
        "min_level": 2,
        "approval": "Manual",
        "approval_within_hours": 24,
        "approval_note": "We confirm requests within 1 business day.",
        "hours": "opening_hours",
        "slot_minutes": 30,
        "starts": [],
        "buffer_minutes": 10,
        "lead_hours": 12,
        "horizon_days": 60,
        "breaks": [
            {
                "days": [
                    "mon",
                    "tue",
                    "wed",
                    "thu",
                    "fri"
                ],
                "from": "13:00",
                "to": "14:00"
            }
        ],
        "closed": [
            {
                "from": "2026-12-24",
                "to": "2027-01-02",
                "note": "Holidays"
            }
        ],
        "timezone": "Europe/Sofia",
        "availability": "https://grafika.jotters.me/api/v1/availability"
    },
    "payment": {
        "currency": "EUR",
        "due_days": 3,
        "reference_format": "{ServiceCode}-{Initials}{BookingId:5}",
        "choices": [
            {
                "id": "cash",
                "name": "Cash on site",
                "needs_code": false
            },
            {
                "id": "card_on_site",
                "name": "Card on site",
                "needs_code": false
            },
            {
                "id": "transfer",
                "name": "Bank transfer",
                "needs_code": true
            },
            {
                "id": "ePay",
                "name": "ePay.bg",
                "needs_code": true
            },
            {
                "id": "RevolutPay",
                "name": "Revolut Pay",
                "needs_code": true
            }
        ],
        "cash": {
            "accepted": true,
            "coins": true,
            "banknotes_up_to": 100
        },
        "on_site": {
            "cards": [
                "Visa",
                "VisaElec",
                "MstrCard",
                "Maestro",
                "Borica"
            ],
            "contactless": [
                "Tap",
                "GooglePay",
                "ApplePay",
                "GarminPay"
            ],
            "providers": [
                "DSK Bank"
            ]
        },
        "online": {
            "cards": [
                "Visa",
                "MstrCard"
            ],
            "contactless": [
                "GooglePay",
                "ApplePay"
            ],
            "providers": [
                "UniCredit Bulbank"
            ],
            "transfers": [
                "SEPA",
                "SEPAInst",
                "BoricaBlink"
            ],
            "services": [
                "ePay",
                "RevolutPay"
            ]
        },
        "terminals": [
            {
                "where": "on_site",
                "provider": "DSK Bank",
                "cards": [
                    "Visa",
                    "VisaElec",
                    "MstrCard",
                    "Maestro",
                    "Borica"
                ],
                "contactless": [
                    "Tap",
                    "GooglePay",
                    "ApplePay",
                    "GarminPay"
                ]
            },
            {
                "where": "online",
                "provider": "UniCredit Bulbank",
                "cards": [
                    "Visa",
                    "MstrCard"
                ],
                "contactless": [
                    "GooglePay",
                    "ApplePay"
                ]
            }
        ],
        "banks": [
            {
                "bank": "Example Bank",
                "bic": null
            }
        ],
        "codes": {
            "cards": {
                "Visa": "Visa",
                "VisaElec": "Visa Electron",
                "VisaPay": "Visa Pay",
                "MstrCard": "Mastercard",
                "Maestro": "Maestro",
                "AmEx": "American Express",
                "Discvr": "Discover",
                "DinrsClb": "Diners Club",
                "JCB": "JCB",
                "UnionPay": "UnionPay",
                "Borica": "BORICA",
                "BrcaVouch": "BORICA vouchers"
            },
            "contactless": {
                "Tap": "Contactless card",
                "GooglePay": "Google Pay",
                "ApplePay": "Apple Pay",
                "SamsungPay": "Samsung Pay",
                "GarminPay": "Garmin Pay",
                "FitbitPay": "Fitbit Pay",
                "SwatchPay": "SwatchPAY!",
                "CurvePay": "Curve Pay"
            },
            "transfers": {
                "SEPA": "SEPA transfer",
                "SEPAInst": "SEPA Instant",
                "BoricaBlink": "Borica Blink"
            },
            "services": {
                "ePay": "ePay.bg",
                "EasyPay": "EasyPay",
                "PayPal": "PayPal",
                "RevolutPay": "Revolut Pay",
                "Wise": "Wise"
            }
        }
    },
    "meetings": {
        "grafika_calls": true,
        "default_provider": "jitsi",
        "providers": "https://grafika.jotters.me/api/v1/conferencing",
        "opens_minutes_before": 10
    },
    "notifications": {
        "categories": [
            "reservations",
            "changes",
            "payments",
            "reminders",
            "marketing"
        ],
        "push": {
            "channels": []
        },
        "settings": "https://grafika.jotters.me/api/v1/me/notifications/settings",
        "devices": "https://grafika.jotters.me/api/v1/me/devices"
    },
    "passes": {
        "tickets": null,
        "loyalty": null,
        "templates": "https://grafika.jotters.me/api/v1/pass-templates/{name}"
    },
    "coupons": {
        "enabled": true,
        "ask": [
            "code",
            "link",
            "referral"
        ],
        "link": "https://grafika.jotters.me/c/{code}",
        "offers": "https://grafika.jotters.me/api/v1/offers"
    },
    "api": {
        "base_url": "https://grafika.jotters.me/api/v1",
        "version": 1,
        "level": 3,
        "capabilities": [
            "manifest",
            "services",
            "templates",
            "events",
            "availability",
            "client_sign_in",
            "client_read",
            "client_write",
            "client_book"
        ],
        "auth": {
            "type": "bearer",
            "client": [
                "passkey",
                "email_code",
                "phone_code"
            ],
            "staff": [],
            "refresh": "https://grafika.jotters.me/api/v1/auth/refresh"
        },
        "webauthn": {
            "rp_id": "grafika.jotters.me",
            "rp_name": "Example Studio"
        },
        "endpoints": {
            "manifest": "https://grafika.jotters.me/api/v1/manifest",
            "services": "https://grafika.jotters.me/api/v1/services",
            "templates": "https://grafika.jotters.me/api/v1/templates",
            "catalogs": "https://grafika.jotters.me/api/v1/catalogs",
            "offers": "https://grafika.jotters.me/api/v1/offers",
            "coupons": "https://grafika.jotters.me/api/v1/me/coupons",
            "events": "https://grafika.jotters.me/api/v1/events",
            "availability": "https://grafika.jotters.me/api/v1/availability",
            "people": "https://grafika.jotters.me/api/v1/people",
            "bookings": "https://grafika.jotters.me/api/v1/bookings",
            "auth": "https://grafika.jotters.me/api/v1/auth",
            "me": "https://grafika.jotters.me/api/v1/me",
            "records": "https://grafika.jotters.me/api/v1/records/{number}"
        }
    }
}
