GLØDI

Find clinics, treatments, prices and free times on GLØDI in Norway, with booking links.

我該用這個嗎

品質與安全性

A
說明品質
99%
結構描述完整度
91%
命名品質
99%
汙染風險
100%
權限相符程度
90%
協定合規性
100%

發現項目(1)

  • LOWTool 'browse_site' suggests web access but openWorldHint=false在 browse_site 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~12,244Token(工具定義)
~9.8 KB典型回應大小
顯著的注意力影響(128k 上下文的 9.57%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "public-catalog": {
      "url": "https://glodi.no/mcp"
    }
  }
}

遠端端點

https://glodi.no/mcpstreamable-http

它能做什麼

工具清單

工具(14)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢find_clinics(page, page_size, query, near, place, ...)

Find clinics near a place, in a town or by name, nearest first. Each clinic has its clinic_id, address, distance, phone numbers with call/SMS/WhatsApp channels, hours today, open now and rating. Give near (latitude/longitude) or place (a town, place name or four-digit postal code). With treatment_id, only clinics that offer it now, with their price from.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "default": 1
    },
    "page_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    },
    "query": {
      "type": "string",
      "maxLength": 160,
      "description": "A clinic name or a town. A town without a clinic of that name is searched as a place."
    },
    "near": {
      "type": "object",
      "properties": {
        "latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90,
          "description": "WGS84 latitude, for example 59.79."
        },
        "longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180,
          "description": "WGS84 longitude, for example 10.33."
        }
      },
      "required": [
        "latitude",
        "longitude"
      ],
      "additionalProperties": false,
      "description": "A position. It wins over place."
    },
    "place": {
      "type": "string",
      "maxLength": 100,
      "description": "A town or place name (\"Asker\", \"Lierskogen\") or a four-digit postal code (\"3420\")."
    },
    "radius_km": {
      "type": "number",
      "minimum": 0.5,
      "maximum": 500,
      "default": 25,
      "description": "Search radius around the position."
    },
    "treatment_id": {
      "type": "string",
      "maxLength": 200,
      "description": "Only clinics that offer this treatment now."
    },
    "open_now": {
      "type": "boolean",
      "default": false,
      "description": "Only clinics open at this moment (Europe/Oslo)."
    },
    "open_on": {
      "type": "string",
      "format": "date",
      "description": "Only clinics open on this day (YYYY-MM-DD)."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "next": {
      "type": [
        "string",
        "null"
      ]
    },
    "previous": {
      "type": [
        "string",
        "null"
      ]
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "clinic_id": {
            "type": "string",
            "description": "The clinic slug; pass it as clinic_id to other tools."
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "short_description": {
            "type": "string"
          },
          "address": {
            "type": "object",
            "properties": {
              "street": {
                "type": "string"
              },
              "postal_code": {
                "type": "string"
              },
              "city": {
                "type": "string"
              }
            },
            "required": [
              "street",
              "postal_code",
              "city"
            ],
            "additionalProperties": false
          },
          "location": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "latitude": {
                "type": "number"
              },
              "longitude": {
                "type": "number"
              }
            },
            "required": [
              "latitude",
              "longitude"
            ],
            "additionalProperties": false
          },
          "distance_km": {
            "type": [
              "number",
              "null"
            ]
          },
          "phones": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "number": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                },
                "channels": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "call, sms or whatsapp."
                }
              },
              "required": [
                "number",
                "label",
                "note",
                "channels"
              ],
              "additionalProperties": false
            }
          },
          "email": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "hours_today": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "date": {
                "type": "string"
              },
              "closed": {
                "type": "boolean"
              },
              "opens": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "closes": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "closure_reason": {
                "type": "string"
              }
            },
            "required": [
              "date",
              "closed",
              "opens",
              "closes",
              "closure_reason"
            ],
            "additionalProperties": false
          },
          "open_now": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "rating": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "average": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Average of published reviews, 1 to 5."
              },
              "count": {
                "type": "integer"
              }
            },
            "required": [
              "average",
              "count"
            ],
            "additionalProperties": false
          },
          "price_from_nok": {
            "type": [
              "number",
              "null"
            ],
            "description": "Lowest current price of treatment_id at this clinic."
          }
        },
        "required": [
          "clinic_id",
          "name",
          "type",
          "short_description",
          "address",
          "location",
          "distance_km",
          "phones",
          "email",
          "url",
          "hours_today",
          "open_now",
          "rating",
          "price_from_nok"
        ],
        "additionalProperties": false
      }
    },
    "place": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "query": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "municipality": {
          "type": "string"
        },
        "postal_code": {
          "type": [
            "string",
            "null"
          ]
        },
        "latitude": {
          "type": "number"
        },
        "longitude": {
          "type": "number"
        },
        "source": {
          "type": "string"
        }
      },
      "required": [
        "query",
        "name",
        "kind",
        "municipality",
        "postal_code",
        "latitude",
        "longitude",
        "source"
      ],
      "additionalProperties": false
    },
    "radius_km": {
      "type": [
        "number",
        "null"
      ]
    },
    "none_within_radius": {
      "type": "boolean"
    },
    "nearest_outside_radius": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "clinic_id": {
            "type": "string",
            "description": "The clinic slug; pass it as clinic_id to other tools."
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "short_description": {
            "type": "string"
          },
          "address": {
            "type": "object",
            "properties": {
              "street": {
                "type": "string"
              },
              "postal_code": {
                "type": "string"
              },
              "city": {
                "type": "string"
              }
            },
            "required": [
              "street",
              "postal_code",
              "city"
            ],
            "additionalProperties": false
          },
          "location": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "latitude": {
                "type": "number"
              },
              "longitude": {
                "type": "number"
              }
            },
            "required": [
              "latitude",
              "longitude"
            ],
            "additionalProperties": false
          },
          "distance_km": {
            "type": [
              "number",
              "null"
            ]
          },
          "phones": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "number": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                },
                "channels": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "call, sms or whatsapp."
                }
              },
              "required": [
                "number",
                "label",
                "note",
                "channels"
              ],
              "additionalProperties": false
            }
          },
          "email": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "hours_today": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "date": {
                "type": "string"
              },
              "closed": {
                "type": "boolean"
              },
              "opens": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "closes": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "closure_reason": {
                "type": "string"
              }
            },
            "required": [
              "date",
              "closed",
              "opens",
              "closes",
              "closure_reason"
            ],
            "additionalProperties": false
          },
          "open_now": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "rating": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "average": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Average of published reviews, 1 to 5."
              },
              "count": {
                "type": "integer"
              }
            },
            "required": [
              "average",
              "count"
            ],
            "additionalProperties": false
          },
          "price_from_nok": {
            "type": [
              "number",
              "null"
            ],
            "description": "Lowest current price of treatment_id at this clinic."
          }
        },
        "required": [
          "clinic_id",
          "name",
          "type",
          "short_description",
          "address",
          "location",
          "distance_km",
          "phones",
          "email",
          "url",
          "hours_today",
          "open_now",
          "rating",
          "price_from_nok"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "count",
    "next",
    "previous",
    "results",
    "place",
    "radius_km",
    "none_within_radius",
    "nearest_outside_radius"
  ],
  "additionalProperties": false
}
🟢get_clinic(clinic_id, locale)

One clinic's facts: address, phones, the week's opening hours (also odd and even weeks), closed days, parking, team, treatment categories with prices, current offers, payment methods, cancellation notice, gift cards and subscriptions.

輸入結構描述

{
  "type": "object",
  "properties": {
    "clinic_id": {
      "type": "string",
      "maxLength": 80,
      "description": "The clinic_id find_clinics returns. Never build it from a name. A clinic site needs none."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "clinic_id": {
      "type": "string",
      "description": "The clinic slug; pass it as clinic_id to other tools."
    },
    "name": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "short_description": {
      "type": "string"
    },
    "address": {
      "type": "object",
      "properties": {
        "street": {
          "type": "string"
        },
        "postal_code": {
          "type": "string"
        },
        "city": {
          "type": "string"
        }
      },
      "required": [
        "street",
        "postal_code",
        "city"
      ],
      "additionalProperties": false
    },
    "location": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "latitude": {
          "type": "number"
        },
        "longitude": {
          "type": "number"
        }
      },
      "required": [
        "latitude",
        "longitude"
      ],
      "additionalProperties": false
    },
    "distance_km": {
      "type": [
        "number",
        "null"
      ]
    },
    "phones": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "channels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "call, sms or whatsapp."
          }
        },
        "required": [
          "number",
          "label",
          "note",
          "channels"
        ],
        "additionalProperties": false
      }
    },
    "email": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "hours_today": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "date": {
          "type": "string"
        },
        "closed": {
          "type": "boolean"
        },
        "opens": {
          "type": [
            "string",
            "null"
          ]
        },
        "closes": {
          "type": [
            "string",
            "null"
          ]
        },
        "closure_reason": {
          "type": "string"
        }
      },
      "required": [
        "date",
        "closed",
        "opens",
        "closes",
        "closure_reason"
      ],
      "additionalProperties": false
    },
    "open_now": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "rating": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "average": {
          "type": [
            "number",
            "null"
          ],
          "description": "Average of published reviews, 1 to 5."
        },
        "count": {
          "type": "integer"
        }
      },
      "required": [
        "average",
        "count"
      ],
      "additionalProperties": false
    },
    "price_from_nok": {
      "type": [
        "number",
        "null"
      ],
      "description": "Lowest current price of treatment_id at this clinic."
    },
    "description": {
      "type": "string"
    },
    "week_hours": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "timezone": {
          "type": "string"
        },
        "alternating": {
          "type": "boolean"
        },
        "this_week": {
          "type": "string",
          "description": "odd or even: the parity of the current ISO week."
        },
        "schedules": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "weeks": {
                "type": "string",
                "description": "every, odd or even ISO weeks."
              },
              "days": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "weekday": {
                      "type": "integer",
                      "description": "0 is Monday."
                    },
                    "day": {
                      "type": "string"
                    },
                    "closed": {
                      "type": "boolean"
                    },
                    "opens": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "closes": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "weekday",
                    "day",
                    "closed",
                    "opens",
                    "closes"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "weeks",
              "days"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "timezone",
        "alternating",
        "this_week",
        "schedules"
      ],
      "additionalProperties": false
    },
    "closures": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "date",
          "reason"
        ],
        "additionalProperties": false
      }
    },
    "parking": {
      "type": "string"
    },
    "social_links": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "platform",
          "url"
        ],
        "additionalProperties": false
      }
    },
    "legal_name": {
      "type": "string"
    },
    "org_number": {
      "type": "string"
    },
    "team": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "practitioner_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "rating": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "average": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Average of published reviews, 1 to 5."
              },
              "count": {
                "type": "integer"
              }
            },
            "required": [
              "average",
              "count"
            ],
            "additionalProperties": false
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "practitioner_id",
          "name",
          "title",
          "rating",
          "url"
        ],
        "additionalProperties": false
      }
    },
    "treatment_tree": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "treatment_count": {
            "type": "integer"
          },
          "price_from_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_to_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "subcategories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "slug": {
                  "type": "string"
                },
                "treatment_count": {
                  "type": "integer"
                },
                "price_from_nok": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "price_to_nok": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "name",
                "slug",
                "treatment_count",
                "price_from_nok",
                "price_to_nok"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "name",
          "slug",
          "treatment_count",
          "price_from_nok",
          "price_to_nok",
          "subcategories"
        ],
        "additionalProperties": false
      }
    },
    "on_offer": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "treatment_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "offer_price_from_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "offer_price_to_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "treatment_id",
          "name",
          "offer_price_from_nok",
          "offer_price_to_nok",
          "url"
        ],
        "additionalProperties": false
      }
    },
    "payment_methods": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "cancellation_notice_hours": {
      "type": [
        "integer",
        "null"
      ]
    },
    "gift_card": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "terms": {
          "type": "string"
        },
        "expiry": {
          "type": "string"
        }
      },
      "required": [
        "url",
        "terms",
        "expiry"
      ],
      "additionalProperties": false
    },
    "subscriptions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "interval": {
            "type": "string",
            "description": "The default delivery interval."
          },
          "discount_percent": {
            "type": [
              "number",
              "null"
            ]
          },
          "free_shipping": {
            "type": "boolean"
          },
          "products": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "price_nok": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "name",
                "price_nok"
              ],
              "additionalProperties": false
            }
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "description",
          "interval",
          "discount_percent",
          "free_shipping",
          "products",
          "url"
        ],
        "additionalProperties": false
      }
    },
    "products_count": {
      "type": "integer"
    },
    "events_count": {
      "type": "integer"
    },
    "privacy_url": {
      "type": "string"
    },
    "terms_url": {
      "type": "string"
    }
  },
  "required": [
    "clinic_id",
    "name",
    "type",
    "short_description",
    "address",
    "location",
    "distance_km",
    "phones",
    "email",
    "url",
    "hours_today",
    "open_now",
    "rating",
    "price_from_nok",
    "description",
    "week_hours",
    "closures",
    "parking",
    "social_links",
    "legal_name",
    "org_number",
    "team",
    "treatment_tree",
    "on_offer",
    "payment_methods",
    "cancellation_notice_hours",
    "gift_card",
    "subscriptions",
    "products_count",
    "events_count",
    "privacy_url",
    "terms_url"
  ],
  "additionalProperties": false
}
🟢find_practitioners(page, page_size, query, clinic_id, locale)

Find a practitioner by name (at least two letters) and the clinics where each can be booked now. For who can do one treatment option, with prices, use get_booking_choices.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "default": 1
    },
    "page_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    },
    "query": {
      "type": "string",
      "maxLength": 160,
      "description": "At least two letters of the practitioner name."
    },
    "clinic_id": {
      "type": "string",
      "maxLength": 80,
      "description": "The clinic_id find_clinics returns. Never build it from a name. A clinic site needs none."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "next": {
      "type": [
        "string",
        "null"
      ]
    },
    "previous": {
      "type": [
        "string",
        "null"
      ]
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "practitioner_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "clinics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "clinic_id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "clinic_id",
                "name"
              ],
              "additionalProperties": false
            }
          },
          "rating": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "average": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Average of published reviews, 1 to 5."
              },
              "count": {
                "type": "integer"
              }
            },
            "required": [
              "average",
              "count"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "practitioner_id",
          "name",
          "title",
          "url",
          "clinics",
          "rating"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "count",
    "next",
    "previous",
    "results"
  ],
  "additionalProperties": false
}
🟢search_treatments(page, page_size, query, clinic_id, near, ...)

Search treatments in Norwegian and English at once; spelling mistakes and compound words are handled. Each result has its treatment_id, category path, price from-to, offer price, duration, clinic count and, with near or place, the nearest clinics. Filter by category, body_area or skin_concern (browse_site lists them). Treatments no clinic can book now are left out unless include_unbookable is true. Without a match: suggestions and categories.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "default": 1
    },
    "page_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    },
    "query": {
      "type": "string",
      "maxLength": 160,
      "description": "Treatment words in Norwegian or English. Leave empty to browse."
    },
    "clinic_id": {
      "type": "string",
      "maxLength": 80,
      "description": "The clinic_id find_clinics returns. Never build it from a name. A clinic site needs none."
    },
    "near": {
      "type": "object",
      "properties": {
        "latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90,
          "description": "WGS84 latitude, for example 59.79."
        },
        "longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180,
          "description": "WGS84 longitude, for example 10.33."
        }
      },
      "required": [
        "latitude",
        "longitude"
      ],
      "additionalProperties": false,
      "description": "A position. It wins over place."
    },
    "place": {
      "type": "string",
      "maxLength": 100,
      "description": "A town or place name (\"Asker\", \"Lierskogen\") or a four-digit postal code (\"3420\")."
    },
    "category": {
      "type": "string",
      "maxLength": 200,
      "description": "A category slug from browse_site, or its slug path (\"ansikt/laser\")."
    },
    "body_area": {
      "type": "string",
      "maxLength": 120,
      "description": "A body area slug from browse_site."
    },
    "skin_concern": {
      "type": "string",
      "maxLength": 120,
      "description": "A skin concern slug from browse_site."
    },
    "max_price_nok": {
      "type": "number",
      "minimum": 0,
      "description": "Only treatments with a price from at most this."
    },
    "on_offer": {
      "type": "boolean",
      "default": false,
      "description": "Only treatments with an active offer."
    },
    "include_unbookable": {
      "type": "boolean",
      "default": false,
      "description": "Also treatments no clinic can book now."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "next": {
      "type": [
        "string",
        "null"
      ]
    },
    "previous": {
      "type": [
        "string",
        "null"
      ]
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "treatment_id": {
            "type": "string",
            "description": "The treatment slug; pass it as treatment_id."
          },
          "service_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "other_name": {
            "type": "string",
            "description": "The name in the other language."
          },
          "category_path": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "summary": {
            "type": "string"
          },
          "price_from_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_to_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "offer": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "price_from_nok": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "price_to_nok": {
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "price_from_nok",
              "price_to_nok"
            ],
            "additionalProperties": false
          },
          "duration_minutes": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "min": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "max": {
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "min",
              "max"
            ],
            "additionalProperties": false
          },
          "option_count": {
            "type": "integer"
          },
          "requires_consultation": {
            "type": "boolean"
          },
          "bookable": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "null: still unknown."
          },
          "clinic_count": {
            "type": [
              "integer",
              "null"
            ]
          },
          "nearest_clinics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "clinic_id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "distance_km": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "price_from_nok": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "url": {
                  "type": "string"
                }
              },
              "required": [
                "clinic_id",
                "name",
                "distance_km",
                "price_from_nok",
                "url"
              ],
              "additionalProperties": false
            }
          },
          "url": {
            "type": "string"
          },
          "booking_url": {
            "type": "string"
          }
        },
        "required": [
          "treatment_id",
          "service_id",
          "name",
          "other_name",
          "category_path",
          "summary",
          "price_from_nok",
          "price_to_nok",
          "offer",
          "duration_minutes",
          "option_count",
          "requires_consultation",
          "bookable",
          "clinic_count",
          "nearest_clinics",
          "url",
          "booking_url"
        ],
        "additionalProperties": false
      }
    },
    "complete": {
      "type": "boolean",
      "description": "false: some prices or bookability are still building."
    },
    "corrected_query": {
      "type": [
        "string",
        "null"
      ]
    },
    "suggestions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "treatment_count": {
            "type": "integer"
          }
        },
        "required": [
          "name",
          "slug",
          "treatment_count"
        ],
        "additionalProperties": false
      }
    },
    "place": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "query": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "municipality": {
          "type": "string"
        },
        "postal_code": {
          "type": [
            "string",
            "null"
          ]
        },
        "latitude": {
          "type": "number"
        },
        "longitude": {
          "type": "number"
        },
        "source": {
          "type": "string"
        }
      },
      "required": [
        "query",
        "name",
        "kind",
        "municipality",
        "postal_code",
        "latitude",
        "longitude",
        "source"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "count",
    "next",
    "previous",
    "results",
    "complete",
    "corrected_query",
    "suggestions",
    "categories",
    "place"
  ],
  "additionalProperties": false
}
🟢get_treatment(treatment_id, clinic_id, near, place, locale)

One treatment: what it is, the procedure, recovery and safety, sessions and interval, its options with option_id, price, offer price and duration, the clinics that offer it and its reviews. Every option has a booking_url.

輸入結構描述

{
  "type": "object",
  "properties": {
    "treatment_id": {
      "type": "string",
      "maxLength": 200,
      "description": "The treatment_id search_treatments returns."
    },
    "clinic_id": {
      "type": "string",
      "maxLength": 80,
      "description": "The clinic_id find_clinics returns. Never build it from a name. A clinic site needs none."
    },
    "near": {
      "type": "object",
      "properties": {
        "latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90,
          "description": "WGS84 latitude, for example 59.79."
        },
        "longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180,
          "description": "WGS84 longitude, for example 10.33."
        }
      },
      "required": [
        "latitude",
        "longitude"
      ],
      "additionalProperties": false,
      "description": "A position. It wins over place."
    },
    "place": {
      "type": "string",
      "maxLength": 100,
      "description": "A town or place name (\"Asker\", \"Lierskogen\") or a four-digit postal code (\"3420\")."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [
    "treatment_id"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "treatment_id": {
      "type": "string"
    },
    "service_id": {
      "type": "integer"
    },
    "name": {
      "type": "string"
    },
    "other_name": {
      "type": "string"
    },
    "category_path": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "about": {
      "type": "string"
    },
    "facts": {
      "type": "object",
      "properties": {
        "sessions": {
          "type": [
            "integer",
            "null"
          ]
        },
        "interval_days": {
          "type": [
            "integer",
            "null"
          ]
        },
        "price_is_per_session": {
          "type": "boolean"
        },
        "requires_consultation": {
          "type": "boolean"
        }
      },
      "required": [
        "sessions",
        "interval_days",
        "price_is_per_session",
        "requires_consultation"
      ],
      "additionalProperties": false
    },
    "content": {
      "type": "object",
      "properties": {
        "procedure": {
          "type": "string"
        },
        "experience_and_recovery": {
          "type": "string"
        },
        "expectations_and_safety": {
          "type": "string"
        },
        "benefits": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "expected_results": {
          "type": "string"
        }
      },
      "required": [
        "procedure",
        "experience_and_recovery",
        "expectations_and_safety",
        "benefits",
        "expected_results"
      ],
      "additionalProperties": false
    },
    "options": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "option_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "price_from_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_to_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "offer_price_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "duration_minutes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "party_size": {
            "type": "integer"
          },
          "bookable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "booking_url": {
            "type": "string"
          }
        },
        "required": [
          "option_id",
          "name",
          "price_from_nok",
          "price_to_nok",
          "offer_price_nok",
          "duration_minutes",
          "party_size",
          "bookable",
          "booking_url"
        ],
        "additionalProperties": false
      }
    },
    "clinics": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "clinic_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "distance_km": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_from_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "clinic_id",
          "name",
          "distance_km",
          "price_from_nok",
          "url"
        ],
        "additionalProperties": false
      }
    },
    "reviews": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "average": {
          "type": [
            "number",
            "null"
          ],
          "description": "Average of published reviews, 1 to 5."
        },
        "count": {
          "type": "integer"
        }
      },
      "required": [
        "average",
        "count"
      ],
      "additionalProperties": false
    },
    "guide_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "url": {
      "type": "string"
    },
    "complete": {
      "type": "boolean"
    },
    "place": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "query": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "municipality": {
          "type": "string"
        },
        "postal_code": {
          "type": [
            "string",
            "null"
          ]
        },
        "latitude": {
          "type": "number"
        },
        "longitude": {
          "type": "number"
        },
        "source": {
          "type": "string"
        }
      },
      "required": [
        "query",
        "name",
        "kind",
        "municipality",
        "postal_code",
        "latitude",
        "longitude",
        "source"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "treatment_id",
    "service_id",
    "name",
    "other_name",
    "category_path",
    "about",
    "facts",
    "content",
    "options",
    "clinics",
    "reviews",
    "guide_url",
    "url",
    "complete",
    "place"
  ],
  "additionalProperties": false
}
🟢get_booking_choices(option_id, clinic_id, near, place, locale)

The choices the booking lightbox offers for one option_id. Without a clinic: every clinic that can book it, with distance, practitioner count and prices. With clinic_id: the practitioners with their own prices (practitioner_id), add-ons, packages, party size, cancellation notice and payment methods.

輸入結構描述

{
  "type": "object",
  "properties": {
    "option_id": {
      "type": "integer",
      "minimum": 1,
      "description": "The option_id get_treatment returns."
    },
    "clinic_id": {
      "type": "string",
      "maxLength": 80,
      "description": "The clinic_id find_clinics returns. Never build it from a name. A clinic site needs none."
    },
    "near": {
      "type": "object",
      "properties": {
        "latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90,
          "description": "WGS84 latitude, for example 59.79."
        },
        "longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180,
          "description": "WGS84 longitude, for example 10.33."
        }
      },
      "required": [
        "latitude",
        "longitude"
      ],
      "additionalProperties": false,
      "description": "A position. It wins over place."
    },
    "place": {
      "type": "string",
      "maxLength": 100,
      "description": "A town or place name (\"Asker\", \"Lierskogen\") or a four-digit postal code (\"3420\")."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [
    "option_id"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "option_id": {
      "type": "integer"
    },
    "option_name": {
      "type": "string"
    },
    "treatment_id": {
      "type": "string"
    },
    "clinic_id": {
      "type": [
        "string",
        "null"
      ]
    },
    "complete": {
      "type": "boolean",
      "description": "false: some clinics or practitioners are still building."
    },
    "clinics": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "clinic_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "address": {
            "type": "object",
            "properties": {
              "street": {
                "type": "string"
              },
              "postal_code": {
                "type": "string"
              },
              "city": {
                "type": "string"
              }
            },
            "required": [
              "street",
              "postal_code",
              "city"
            ],
            "additionalProperties": false
          },
          "location": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "latitude": {
                "type": "number"
              },
              "longitude": {
                "type": "number"
              }
            },
            "required": [
              "latitude",
              "longitude"
            ],
            "additionalProperties": false
          },
          "distance_km": {
            "type": [
              "number",
              "null"
            ]
          },
          "rating": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "average": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Average of published reviews, 1 to 5."
              },
              "count": {
                "type": "integer"
              }
            },
            "required": [
              "average",
              "count"
            ],
            "additionalProperties": false
          },
          "practitioner_count": {
            "type": "integer"
          },
          "price_from_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_to_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "duration_minutes": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "min": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "max": {
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "min",
              "max"
            ],
            "additionalProperties": false
          },
          "offer_price_from_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "offer_price_to_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "booking_url": {
            "type": "string"
          }
        },
        "required": [
          "clinic_id",
          "name",
          "address",
          "location",
          "distance_km",
          "rating",
          "practitioner_count",
          "price_from_nok",
          "price_to_nok",
          "duration_minutes",
          "offer_price_from_nok",
          "offer_price_to_nok",
          "booking_url"
        ],
        "additionalProperties": false
      }
    },
    "practitioners": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "practitioner_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "seniority": {
            "type": "string"
          },
          "price_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "offer_price_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "duration_minutes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "review_count": {
            "type": "integer"
          },
          "has_free_time": {
            "type": "boolean"
          },
          "booking_url": {
            "type": "string"
          }
        },
        "required": [
          "practitioner_id",
          "name",
          "title",
          "seniority",
          "price_nok",
          "offer_price_nok",
          "duration_minutes",
          "rating",
          "review_count",
          "has_free_time",
          "booking_url"
        ],
        "additionalProperties": false
      }
    },
    "add_ons": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "add_on_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "price_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "extra_minutes": {
            "type": "integer"
          }
        },
        "required": [
          "add_on_id",
          "name",
          "price_nok",
          "extra_minutes"
        ],
        "additionalProperties": false
      }
    },
    "packages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "package_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "sessions": {
            "type": "integer"
          },
          "price_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "saving_percent": {
            "type": [
              "number",
              "null"
            ]
          },
          "booking_url": {
            "type": "string"
          }
        },
        "required": [
          "package_id",
          "name",
          "sessions",
          "price_nok",
          "saving_percent",
          "booking_url"
        ],
        "additionalProperties": false
      }
    },
    "party_size": {
      "type": "integer"
    },
    "cancellation_notice_hours": {
      "type": [
        "integer",
        "null"
      ]
    },
    "payment_methods": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "booking_url": {
      "type": "string"
    },
    "place": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "query": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "municipality": {
          "type": "string"
        },
        "postal_code": {
          "type": [
            "string",
            "null"
          ]
        },
        "latitude": {
          "type": "number"
        },
        "longitude": {
          "type": "number"
        },
        "source": {
          "type": "string"
        }
      },
      "required": [
        "query",
        "name",
        "kind",
        "municipality",
        "postal_code",
        "latitude",
        "longitude",
        "source"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "option_id",
    "option_name",
    "treatment_id",
    "clinic_id",
    "complete",
    "clinics",
    "practitioners",
    "add_ons",
    "packages",
    "party_size",
    "cancellation_notice_hours",
    "payment_methods",
    "booking_url",
    "place"
  ],
  "additionalProperties": false
}
🟢find_free_days(option_id, clinic_id, near, place, practitioner_id, ...)

Which days have a free time for one option_id, for up to 60 days, at clinic_id or at the three nearest clinics to near or place. For one practitioner_id or anyone; add_on_ids lengthen the visit. No free day gives a waitlist_url.

輸入結構描述

{
  "type": "object",
  "properties": {
    "option_id": {
      "type": "integer",
      "minimum": 1,
      "description": "The option_id get_treatment returns."
    },
    "clinic_id": {
      "type": "string",
      "maxLength": 80,
      "description": "The clinic_id find_clinics returns. Never build it from a name. A clinic site needs none."
    },
    "near": {
      "type": "object",
      "properties": {
        "latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90,
          "description": "WGS84 latitude, for example 59.79."
        },
        "longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180,
          "description": "WGS84 longitude, for example 10.33."
        }
      },
      "required": [
        "latitude",
        "longitude"
      ],
      "additionalProperties": false,
      "description": "A position. It wins over place."
    },
    "place": {
      "type": "string",
      "maxLength": 100,
      "description": "A town or place name (\"Asker\", \"Lierskogen\") or a four-digit postal code (\"3420\")."
    },
    "practitioner_id": {
      "type": "integer",
      "minimum": 1,
      "description": "One practitioner; omit for anyone."
    },
    "add_on_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1
      },
      "maxItems": 10,
      "description": "Add-on ids from get_booking_choices. Their minutes lengthen each time."
    },
    "from_date": {
      "type": "string",
      "format": "date",
      "description": "First day (YYYY-MM-DD); default today."
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "default": 30,
      "description": "How many days to check."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [
    "option_id"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "option_id": {
      "type": "integer"
    },
    "practitioner_id": {
      "type": [
        "integer",
        "null"
      ]
    },
    "from_date": {
      "type": "string"
    },
    "to_date": {
      "type": "string"
    },
    "clinics": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "clinic_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "distance_km": {
            "type": [
              "number",
              "null"
            ]
          },
          "free_days": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "next_free_day": {
            "type": [
              "string",
              "null"
            ]
          },
          "complete": {
            "type": "boolean"
          },
          "booking_url": {
            "type": "string"
          },
          "waitlist_url": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "clinic_id",
          "name",
          "distance_km",
          "free_days",
          "next_free_day",
          "complete",
          "booking_url",
          "waitlist_url"
        ],
        "additionalProperties": false
      }
    },
    "place": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "query": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "municipality": {
          "type": "string"
        },
        "postal_code": {
          "type": [
            "string",
            "null"
          ]
        },
        "latitude": {
          "type": "number"
        },
        "longitude": {
          "type": "number"
        },
        "source": {
          "type": "string"
        }
      },
      "required": [
        "query",
        "name",
        "kind",
        "municipality",
        "postal_code",
        "latitude",
        "longitude",
        "source"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "option_id",
    "practitioner_id",
    "from_date",
    "to_date",
    "clinics",
    "place"
  ],
  "additionalProperties": false
}
🟢find_free_times(option_id, clinic_id, date, from_date, days, ...)

The free times on a date (or up to 7 days) for one option_id at clinic_id, with the practitioners free at each time and their prices. Every time has a booking_url that opens the booking lightbox with the option, practitioner, day, time and add-ons chosen. A time is not held until the person books it.

輸入結構描述

{
  "type": "object",
  "properties": {
    "option_id": {
      "type": "integer",
      "minimum": 1,
      "description": "The option_id get_treatment returns."
    },
    "clinic_id": {
      "type": "string",
      "maxLength": 80,
      "description": "The clinic_id find_clinics returns. Never build it from a name. A clinic site needs none."
    },
    "date": {
      "type": "string",
      "format": "date",
      "description": "One day (YYYY-MM-DD)."
    },
    "from_date": {
      "type": "string",
      "format": "date",
      "description": "First day of a range (YYYY-MM-DD); default today."
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 7,
      "default": 1,
      "description": "How many days from from_date."
    },
    "practitioner_id": {
      "type": "integer",
      "minimum": 1,
      "description": "One practitioner; omit for anyone."
    },
    "add_on_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1
      },
      "maxItems": 10,
      "description": "Add-on ids from get_booking_choices. Their minutes lengthen each time."
    },
    "part_of_day": {
      "type": "string",
      "enum": [
        "morning",
        "afternoon",
        "evening"
      ],
      "description": "morning: before 12:00; afternoon: 12:00-17:00; evening: from 17:00."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [
    "option_id"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "option_id": {
      "type": "integer"
    },
    "clinic_id": {
      "type": "string"
    },
    "practitioner_id": {
      "type": [
        "integer",
        "null"
      ]
    },
    "days": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "times": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "start": {
                  "type": "string"
                },
                "end": {
                  "type": "string"
                },
                "practitioners": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "practitioner_id": {
                        "type": "integer"
                      },
                      "name": {
                        "type": "string"
                      },
                      "price_nok": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "offer_price_nok": {
                        "type": [
                          "number",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "practitioner_id",
                      "name",
                      "price_nok",
                      "offer_price_nok"
                    ],
                    "additionalProperties": false
                  }
                },
                "booking_url": {
                  "type": "string"
                }
              },
              "required": [
                "start",
                "end",
                "practitioners",
                "booking_url"
              ],
              "additionalProperties": false
            }
          },
          "more_times": {
            "type": "boolean",
            "description": "true: the day has more times than listed."
          }
        },
        "required": [
          "date",
          "times",
          "more_times"
        ],
        "additionalProperties": false
      }
    },
    "note": {
      "type": "string"
    },
    "waitlist_url": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "option_id",
    "clinic_id",
    "practitioner_id",
    "days",
    "note",
    "waitlist_url"
  ],
  "additionalProperties": false
}
🟢list_offers(page, page_size, clinic_id, item_type, item_slug, ...)

The live offers (campaigns), with each treatment or product, its price before and after, and until when it holds. Filter by clinic_id, item_type or item_slug; offer_id reads one offer.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "default": 1
    },
    "page_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    },
    "clinic_id": {
      "type": "string",
      "maxLength": 80,
      "description": "The clinic_id find_clinics returns. Never build it from a name. A clinic site needs none."
    },
    "item_type": {
      "type": "string",
      "enum": [
        "service",
        "product"
      ],
      "description": "Offers on treatments or products."
    },
    "item_slug": {
      "type": "string",
      "maxLength": 200,
      "description": "Offers on this treatment or product."
    },
    "offer_id": {
      "type": "string",
      "format": "uuid",
      "description": "One offer with all its items."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "next": {
      "type": [
        "string",
        "null"
      ]
    },
    "previous": {
      "type": [
        "string",
        "null"
      ]
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "offer_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "starts_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "ends_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "discount_percentage": {
            "type": [
              "integer",
              "null"
            ]
          },
          "benefit": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "percent": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "amount_nok": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "price_nok": {
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "type",
              "percent",
              "amount_nok",
              "price_nok"
            ],
            "additionalProperties": false
          },
          "pricing_state": {
            "type": "string",
            "description": "exact: the listed price holds; conditional: it depends on the cart."
          },
          "terms_summary": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "clinic_id": {
                  "type": "string"
                },
                "clinic": {
                  "type": "string"
                },
                "original_price_nok": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "offer_price_nok": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "valid_until": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "available": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "url": {
                  "type": "string"
                },
                "booking_url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Opens the booking lightbox for the offered treatment option."
                }
              },
              "required": [
                "type",
                "name",
                "clinic_id",
                "clinic",
                "original_price_nok",
                "offer_price_nok",
                "valid_until",
                "available",
                "url",
                "booking_url"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "offer_id",
          "name",
          "description",
          "starts_at",
          "ends_at",
          "discount_percentage",
          "benefit",
          "pricing_state",
          "terms_summary",
          "url",
          "items"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "count",
    "next",
    "previous",
    "results"
  ],
  "additionalProperties": false
}
🟢search_products(page, page_size, query, clinic_id, brand, ...)

Search skincare and retail products: GLØDI's marketplace on glodi.no and each clinic's shop on its own site. Filter by brand, category or stock. product_id reads one product with its description, sellers, subscription options, matching treatments and reviews.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "default": 1
    },
    "page_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    },
    "query": {
      "type": "string",
      "maxLength": 160,
      "description": "Product, brand or ingredient words in Norwegian or English. Leave empty to browse."
    },
    "clinic_id": {
      "type": "string",
      "maxLength": 80,
      "description": "The clinic_id find_clinics returns. Never build it from a name. A clinic site needs none."
    },
    "brand": {
      "type": "string",
      "maxLength": 120,
      "description": "A brand name or slug."
    },
    "category": {
      "type": "string",
      "maxLength": 120,
      "description": "A product category name or slug."
    },
    "in_stock_only": {
      "type": "boolean",
      "default": false,
      "description": "Only products in stock now."
    },
    "product_id": {
      "type": "string",
      "maxLength": 200,
      "description": "One product with its sellers."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "next": {
      "type": [
        "string",
        "null"
      ]
    },
    "previous": {
      "type": [
        "string",
        "null"
      ]
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "description": "The product slug."
          },
          "name": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "price_nok": {
            "type": [
              "number",
              "null"
            ],
            "description": "The lowest price a seller asks now."
          },
          "list_price_nok": {
            "type": [
              "number",
              "null"
            ],
            "description": "The recommended retail price."
          },
          "in_stock": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "url": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "how_to_use": {
            "type": [
              "string",
              "null"
            ]
          },
          "sellers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "seller": {
                  "type": "string"
                },
                "price_nok": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "in_stock": {
                  "type": "boolean"
                },
                "pickup": {
                  "type": "boolean"
                },
                "delivery": {
                  "type": "boolean"
                },
                "url": {
                  "type": "string"
                }
              },
              "required": [
                "seller",
                "price_nok",
                "in_stock",
                "pickup",
                "delivery",
                "url"
              ],
              "additionalProperties": false
            }
          },
          "subscription_options": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "discount_percent": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "free_shipping": {
                  "type": "boolean"
                }
              },
              "required": [
                "name",
                "discount_percent",
                "free_shipping"
              ],
              "additionalProperties": false
            }
          },
          "compatible_treatments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "url"
              ],
              "additionalProperties": false
            }
          },
          "reviews": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "average": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Average of published reviews, 1 to 5."
              },
              "count": {
                "type": "integer"
              }
            },
            "required": [
              "average",
              "count"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "product_id",
          "name",
          "brand",
          "category",
          "price_nok",
          "list_price_nok",
          "in_stock",
          "url",
          "description",
          "how_to_use",
          "sellers",
          "subscription_options",
          "compatible_treatments",
          "reviews"
        ],
        "additionalProperties": false
      }
    },
    "corrected_query": {
      "type": [
        "string",
        "null"
      ]
    },
    "suggestions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "count",
    "next",
    "previous",
    "results",
    "corrected_query",
    "suggestions"
  ],
  "additionalProperties": false
}
🟢list_events(page, page_size, clinic_id, from_date, type, ...)

Upcoming arrangements and courses, GLØDI's own and the clinics', with sessions, seats left, price from and registration state. event_id reads one event with its program, prerequisites and price tiers.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "default": 1
    },
    "page_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    },
    "clinic_id": {
      "type": "string",
      "maxLength": 80,
      "description": "The clinic_id find_clinics returns. Never build it from a name. A clinic site needs none."
    },
    "from_date": {
      "type": "string",
      "format": "date",
      "description": "Only sessions from this day (YYYY-MM-DD); default today."
    },
    "type": {
      "type": "string",
      "enum": [
        "event",
        "course"
      ],
      "description": "Arrangements or courses."
    },
    "event_id": {
      "type": "string",
      "maxLength": 200,
      "description": "One event with its program."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "next": {
      "type": [
        "string",
        "null"
      ]
    },
    "previous": {
      "type": [
        "string",
        "null"
      ]
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "event_id": {
            "type": "string",
            "description": "The event slug."
          },
          "title": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "description": "event or course."
          },
          "host": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "description": "clinic or glodi."
              },
              "clinic_id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "kind",
              "clinic_id",
              "name"
            ],
            "additionalProperties": false
          },
          "venue": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "address": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "address"
            ],
            "additionalProperties": false
          },
          "sessions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string"
                },
                "start": {
                  "type": "string"
                },
                "end": {
                  "type": "string"
                },
                "seats_left": {
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              },
              "required": [
                "date",
                "start",
                "end",
                "seats_left"
              ],
              "additionalProperties": false
            }
          },
          "is_full": {
            "type": "boolean"
          },
          "price_from_nok": {
            "type": [
              "number",
              "null"
            ]
          },
          "registration_open": {
            "type": "boolean"
          },
          "url": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "program_modules": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              },
              "required": [
                "title",
                "description"
              ],
              "additionalProperties": false
            }
          },
          "prerequisites": {
            "type": [
              "string",
              "null"
            ]
          },
          "pricing_tiers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "price_nok": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "name",
                "price_nok"
              ],
              "additionalProperties": false
            }
          },
          "waitlist": {
            "type": "boolean"
          }
        },
        "required": [
          "event_id",
          "title",
          "type",
          "host",
          "venue",
          "sessions",
          "is_full",
          "price_from_nok",
          "registration_open",
          "url",
          "description",
          "program_modules",
          "prerequisites",
          "pricing_tiers",
          "waitlist"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "count",
    "next",
    "previous",
    "results"
  ],
  "additionalProperties": false
}
🟢list_reviews(page, page_size, clinic_id, practitioner, treatment_id, ...)

Published reviews and their summary (average, count, distribution) for one clinic_id, practitioner, treatment_id or product_id.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "default": 1
    },
    "page_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    },
    "clinic_id": {
      "type": "string",
      "maxLength": 80,
      "description": "The clinic_id find_clinics returns. Never build it from a name. A clinic site needs none."
    },
    "practitioner": {
      "type": "string",
      "maxLength": 200,
      "description": "The practitioner page slug (/behandler/<slug>)."
    },
    "treatment_id": {
      "type": "string",
      "maxLength": 200
    },
    "product_id": {
      "type": "string",
      "maxLength": 200
    },
    "rating": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5,
      "description": "Only reviews with this rating."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "next": {
      "type": [
        "string",
        "null"
      ]
    },
    "previous": {
      "type": [
        "string",
        "null"
      ]
    },
    "subject_type": {
      "type": "string"
    },
    "subject_id": {
      "type": "string"
    },
    "summary": {
      "type": "object",
      "properties": {
        "average": {
          "type": [
            "number",
            "null"
          ]
        },
        "count": {
          "type": "integer"
        },
        "distribution": {
          "type": "object",
          "additionalProperties": {
            "type": "integer"
          },
          "description": "Count per rating 1 to 5."
        }
      },
      "required": [
        "average",
        "count",
        "distribution"
      ],
      "additionalProperties": false
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "rating": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "date": {
            "type": [
              "string",
              "null"
            ]
          },
          "verified": {
            "type": "boolean"
          },
          "subject": {
            "type": "string"
          },
          "author": {
            "type": "string"
          }
        },
        "required": [
          "rating",
          "title",
          "text",
          "date",
          "verified",
          "subject",
          "author"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "count",
    "next",
    "previous",
    "subject_type",
    "subject_id",
    "summary",
    "results"
  ],
  "additionalProperties": false
}
🟢browse_site(locale)

The map of everything public here: every list page with its count, and the treatment categories, body areas and skin concerns with their slugs, for vague needs ("pigmentering", "acne"). Also the contact facts and, on glodi.no, GLØDI's plans for clinics.

輸入結構描述

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "scope": {
      "type": "string",
      "description": "glodi or clinic."
    },
    "clinic_id": {
      "type": [
        "string",
        "null"
      ]
    },
    "name": {
      "type": "string"
    },
    "sections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "section": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "count": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "section",
          "title",
          "url",
          "count"
        ],
        "additionalProperties": false
      }
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "treatment_count": {
            "type": "integer"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "slug",
          "treatment_count",
          "url"
        ],
        "additionalProperties": false
      }
    },
    "body_areas": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "treatment_count": {
            "type": "integer"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "slug",
          "treatment_count",
          "url"
        ],
        "additionalProperties": false
      }
    },
    "skin_concerns": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "treatment_count": {
            "type": "integer"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "slug",
          "treatment_count",
          "url"
        ],
        "additionalProperties": false
      }
    },
    "contact": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "legal_name": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "phones": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "number": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "note": {
                "type": "string"
              },
              "channels": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "call, sms or whatsapp."
              }
            },
            "required": [
              "number",
              "label",
              "note",
              "channels"
            ],
            "additionalProperties": false
          }
        },
        "address": {
          "type": "object",
          "properties": {
            "street": {
              "type": "string"
            },
            "postal_code": {
              "type": "string"
            },
            "city": {
              "type": "string"
            }
          },
          "required": [
            "street",
            "postal_code",
            "city"
          ],
          "additionalProperties": false
        },
        "social_links": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "name",
        "legal_name",
        "email",
        "url"
      ],
      "additionalProperties": false
    },
    "business_plans": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "plans": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "monthly_price_nok": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "VAT excluded."
              },
              "annual_price_nok": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "VAT excluded."
              },
              "includes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "name",
              "description",
              "monthly_price_nok",
              "annual_price_nok",
              "includes"
            ],
            "additionalProperties": false
          }
        },
        "add_ons": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "monthly_price_nok": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "VAT excluded."
              },
              "features": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "contact_only": {
                "type": "boolean"
              }
            },
            "required": [
              "name",
              "description",
              "monthly_price_nok",
              "features",
              "contact_only"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "plans",
        "add_ons"
      ],
      "additionalProperties": false,
      "description": "GLØDI's software plans for clinics (glodi.no only)."
    }
  },
  "required": [
    "scope",
    "clinic_id",
    "name",
    "sections",
    "categories",
    "body_areas",
    "skin_concerns",
    "contact",
    "business_plans"
  ],
  "additionalProperties": false
}
🟢read_public_page(url, locale)

Read one public page, normally a URL another answer returned: its text sections, links, schema.org facts and typed data for the page type (clinic, treatment, practitioner, offer, product, brand, event, guide, article, ingredient or job).

輸入結構描述

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048,
      "description": "A public page URL, normally one another answer returned."
    },
    "locale": {
      "type": "string",
      "enum": [
        "nb",
        "en"
      ],
      "default": "nb",
      "description": "Answer language: nb (Norwegian) or en."
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "language": {
      "type": "string"
    },
    "image": {
      "type": "string"
    },
    "page_type": {
      "type": "string"
    },
    "sections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "links": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                }
              },
              "required": [
                "title",
                "url"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "title",
          "text",
          "links"
        ],
        "additionalProperties": false
      }
    },
    "facts": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The page's schema.org objects."
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "description": "Typed facts for the page type; null when none apply."
    }
  },
  "required": [
    "url",
    "title",
    "description",
    "language",
    "image",
    "page_type",
    "sections",
    "facts",
    "data"
  ],
  "additionalProperties": false
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本14 個工具