{
  "openapi": "3.1.0",
  "info": {
    "title": "Rosana Alves Xavier Public Information API",
    "version": "1.0.0",
    "description": "Read-only public information about Rosana Alves Xavier, the practice areas of Alves Xavier, and official contact channels. No authentication or API key is required. This API provides institutional information and does not provide legal advice.",
    "contact": {
      "name": "Alves Xavier",
      "email": "rosanalves@adv.oabsp.org.br",
      "url": "https://rosana-xavier-direito-internacional.mktdg-moviecreators.chatgpt.site/contact"
    }
  },
  "servers": [
    {
      "url": "https://rosana-xavier-direito-internacional.mktdg-moviecreators.chatgpt.site",
      "description": "Production"
    }
  ],
  "tags": [
    {
      "name": "Public information",
      "description": "Public, read-only practice information for people and AI agents."
    }
  ],
  "paths": {
    "/api/v1/profile": {
      "get": {
        "operationId": "getRosanaXavierProfile",
        "summary": "Get the professional profile",
        "description": "Returns Rosana Alves Xavier’s public professional identity, registration, experience, location, languages, and service modes.",
        "tags": [
          "Public information"
        ],
        "responses": {
          "200": {
            "description": "Professional profile returned successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Profile"
                }
              }
            }
          },
          "405": {
            "description": "The HTTP method is not supported.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/services": {
      "get": {
        "operationId": "listRosanaXavierServices",
        "summary": "List practice areas",
        "description": "Lists the public practice areas handled from the perspective of Brazilian law, including international family, succession, contracts, documents, and foreign decisions.",
        "tags": [
          "Public information"
        ],
        "responses": {
          "200": {
            "description": "Practice areas returned successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "services",
                    "scopeNotice"
                  ],
                  "properties": {
                    "services": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Service"
                      }
                    },
                    "scopeNotice": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "The HTTP method is not supported.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contact": {
      "get": {
        "operationId": "getRosanaXavierContact",
        "summary": "Get official contact channels",
        "description": "Returns the public WhatsApp, email, Instagram, office address, appointment policy, and relationship notice for Alves Xavier.",
        "tags": [
          "Public information"
        ],
        "responses": {
          "200": {
            "description": "Official contact channels returned successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "405": {
            "description": "The HTTP method is not supported.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/health": {
      "get": {
        "operationId": "getPublicApiHealth",
        "summary": "Check API availability",
        "description": "Returns a small status object that agents can use to confirm the public API is reachable.",
        "tags": [
          "Public information"
        ],
        "responses": {
          "200": {
            "description": "The public API is available.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "service",
                    "version"
                  ],
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "ok"
                    },
                    "service": {
                      "type": "string"
                    },
                    "version": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "The HTTP method is not supported.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Profile": {
        "type": "object",
        "required": [
          "name",
          "jobTitle",
          "barRegistration",
          "experience",
          "office",
          "location",
          "serviceMode",
          "languages",
          "siteUrl"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "jobTitle": {
            "type": "string"
          },
          "barRegistration": {
            "type": "string"
          },
          "experience": {
            "type": "string"
          },
          "office": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "serviceMode": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "siteUrl": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Service": {
        "type": "object",
        "required": [
          "id",
          "name",
          "description"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "Contact": {
        "type": "object",
        "required": [
          "whatsapp",
          "whatsappUrl",
          "email",
          "instagram",
          "instagramUrl",
          "address",
          "appointmentRequired",
          "notice"
        ],
        "properties": {
          "whatsapp": {
            "type": "string"
          },
          "whatsappUrl": {
            "type": "string",
            "format": "uri"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "instagram": {
            "type": "string"
          },
          "instagramUrl": {
            "type": "string",
            "format": "uri"
          },
          "address": {
            "type": "string"
          },
          "appointmentRequired": {
            "type": "boolean"
          },
          "notice": {
            "type": "string"
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message",
              "resolution"
            ],
            "properties": {
              "code": {
                "type": "string",
                "description": "Stable machine-readable error code."
              },
              "message": {
                "type": "string",
                "description": "Human-readable explanation of the error."
              },
              "resolution": {
                "type": "string",
                "description": "Suggested next action for the caller."
              }
            }
          }
        }
      }
    }
  }
}