diff --git a/spn/Android.bp b/spn/Android.bp
new file mode 100644
index 0000000..b08476d
--- /dev/null
+++ b/spn/Android.bp
@@ -0,0 +1,29 @@
+//
+// Copyright (C) 2024 The LineageOS Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// Sensitive Phone Numbers schema
+// =============================================================
+filegroup {
+    name: "spn-schema",
+    srcs: ["SpnInfo.xsd"],
+}
+
+xsd_config {
+    name: "spn-info",
+    srcs: [":spn-schema"],
+    api_dir: "schema",
+    package_name: "org.lineageos.lib.phone.spn",
+}
diff --git a/spn/SpnInfo.xsd b/spn/SpnInfo.xsd
new file mode 100644
index 0000000..d30630d
--- /dev/null
+++ b/spn/SpnInfo.xsd
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<xs:schema version="2.0"
+           elementFormDefault="qualified"
+           attributeFormDefault="unqualified"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+  <xs:element name="sensitivePNS">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="sensitivePN" maxOccurs="unbounded" type="sensitivePN" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:complexType name="sensitivePN">
+    <xs:sequence>
+      <xs:element name="item" maxOccurs="unbounded" type="item" />
+    </xs:sequence>
+    <xs:attribute name="network" type="xs:string" use="required" />
+  </xs:complexType>
+
+  <xs:complexType name="item">
+    <xs:sequence>
+      <xs:element name="number" type="xs:string" />
+      <xs:element name="name" minOccurs="0" type="xs:string" />
+      <xs:element name="categories" minOccurs="0" type="xs:string" />
+      <xs:element name="languages" minOccurs="0" type="xs:string" />
+      <xs:element name="organization" minOccurs="0" type="xs:string" />
+      <xs:element name="website" minOccurs="0" type="xs:anyURI" />
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>
diff --git a/spn/schema/current.txt b/spn/schema/current.txt
new file mode 100644
index 0000000..13e52c6
--- /dev/null
+++ b/spn/schema/current.txt
@@ -0,0 +1,40 @@
+// Signature format: 2.0
+package org.lineageos.lib.phone.spn {
+
+  public class Item {
+    ctor public Item();
+    method public String getCategories();
+    method public String getLanguages();
+    method public String getName();
+    method public String getNumber();
+    method public String getOrganization();
+    method public String getWebsite();
+    method public void setCategories(String);
+    method public void setLanguages(String);
+    method public void setName(String);
+    method public void setNumber(String);
+    method public void setOrganization(String);
+    method public void setWebsite(String);
+  }
+
+  public class SensitivePN {
+    ctor public SensitivePN();
+    method public java.util.List<org.lineageos.lib.phone.spn.Item> getItem();
+    method public String getNetwork();
+    method public void setNetwork(String);
+  }
+
+  public class SensitivePNS {
+    ctor public SensitivePNS();
+    method public java.util.List<org.lineageos.lib.phone.spn.SensitivePN> getSensitivePN();
+  }
+
+  public class XmlParser {
+    ctor public XmlParser();
+    method public static org.lineageos.lib.phone.spn.SensitivePNS read(java.io.InputStream) throws javax.xml.datatype.DatatypeConfigurationException, java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public static String readText(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public static void skip(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+  }
+
+}
+
diff --git a/spn/schema/last_current.txt b/spn/schema/last_current.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/spn/schema/last_current.txt
diff --git a/spn/schema/last_removed.txt b/spn/schema/last_removed.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/spn/schema/last_removed.txt
diff --git a/spn/schema/removed.txt b/spn/schema/removed.txt
new file mode 100644
index 0000000..d802177
--- /dev/null
+++ b/spn/schema/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
