{"openapi":"3.1.0","info":{"title":"Spreadsheet References","version":"0.1.0","description":"A1 / R1C1 cell-reference arithmetic — convert A1 references to row/column coordinates and back, translate column letters to indices, and parse A1 ranges into their extent.","x-guidance":"A1 / R1C1 cell-reference arithmetic — convert A1 references to row/column coordinates and back, translate column letters to indices, and parse A1 ranges into their extent. Each operation is an HTTP POST to its /v1/<operation> path with a JSON request body (see each operation's requestBody schema) and returns a JSON response. Endpoints are paid per successful call via x402 or MPP (USDC on Base); an unpaid request returns 402 with payment metadata in the WWW-Authenticate header.","contact":{"email":"hello@openverbs.com"}},"x-discovery":{"ownershipProofs":["0xb1401a71756f51464a9962db12f1eb3e9522490cd20010b06d00cf7b7770acfd5f79721f9dfdf2643f8cecd29af3bde9ec133941a386042b32d9886053a70de61b","0xc1c1f11793e18a00fcb7072421f26e89fb75b6aa517fa84370564991f4b10efa024f6f57e4e67eefd20cf46cc01fc5a62d793fa8fbcda04f26c946a3433d73f91b","0x676b474af0ef9ed4809b5d12d2e789b36e52d56215b21f601d71f76620e36ec630347116a7b2b349a3c3681e5db0fbfa76c4169a676b6d6f27864d0e5017284a1c","0xc2ab96522515ed9e9bc4f1a241b774bd48df42e951ddbf7f6aa8fc76f5a96a20421703e1ec402ce7eb1e4eabea3b6e4e4129cf39d56ea91cf4fcf38561fc94fc1c"]},"servers":[{"url":"https://spreadsheet.openverbs.com"}],"paths":{"/health":{"get":{"summary":"Health check","security":[],"responses":{"200":{"description":"Healthy","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"service":{"type":"string"},"version":{"type":"string"}}}}}}}}},"/v1/a1-to-rc":{"post":{"summary":"A1 reference → row/column","description":"Parse an A1-style cell reference (e.g. \"B3\" or \"$AA$100\") into 1-based row and column numbers, plus the column letters and whether each part is absolute. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["a1 to row column","parse a1 reference","spreadsheet cell lookup","excel cell coordinates","a1 reference parser","cell row column api"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string","minLength":1,"maxLength":32,"description":"A1 cell reference, e.g. \"B3\" or \"$A$1\"."}},"required":["ref"],"additionalProperties":false},"example":{"ref":"B2"}}}},"responses":{"200":{"description":"`{ row, column, columnLetters, columnAbsolute, rowAbsolute }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ row, column, columnLetters, columnAbsolute, rowAbsolute }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Parse an A1-style cell reference (e.g. \"B3\" or \"$AA$100\") into 1-based row and column numbers, plus the column letters and whether each part is absolute.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Parse an A1-style cell reference (e.g. \"B3\" or \"$AA$100\") into 1-based row and column numbers, plus the column letters and whether each part is absolute.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Parse an A1-style cell reference (e.g. \"B3\" or \"$AA$100\") into 1-based row and column numbers, plus the column letters and whether each part is absolute.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/rc-to-a1":{"post":{"summary":"Row/column → A1 reference","description":"Build an A1-style cell reference from 1-based row and column numbers, optionally marking the row and/or column absolute ($). Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["row column to a1","generate a1 reference","spreadsheet coordinate format","excel cell address","build cell reference","a1 reference api"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"row":{"type":"integer","minimum":1,"maximum":1048576,"description":"1-based row."},"column":{"type":"integer","minimum":1,"maximum":16384,"description":"1-based column."},"rowAbsolute":{"type":"boolean","description":"Prefix the row with $. Default false."},"columnAbsolute":{"type":"boolean","description":"Prefix the column with $. Default false."}},"required":["row","column"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ ref, columnLetters }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ ref, columnLetters }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Build an A1-style cell reference from 1-based row and column numbers, optionally marking the row and/or column absolute ($).","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Build an A1-style cell reference from 1-based row and column numbers, optionally marking the row and/or column absolute ($).","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Build an A1-style cell reference from 1-based row and column numbers, optionally marking the row and/or column absolute ($).","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/column":{"post":{"summary":"Column letter ↔ number","description":"Convert between a spreadsheet column letter and its 1-based index in either direction. Provide exactly one of `letter` (e.g. \"AA\") or `number` (e.g. 27); the response always contains both. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["spreadsheet column conversion","column letter to number","column number to letter","excel column lookup","a1 column api","convert column letters"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"letter":{"type":"string","minLength":1,"maxLength":8,"description":"Column letters, e.g. \"AA\"."},"number":{"type":"integer","minimum":1,"maximum":16384,"description":"1-based column index."}},"additionalProperties":false},"example":{"letter":"AA"}}}},"responses":{"200":{"description":"`{ letter, number }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ letter, number }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Convert between a spreadsheet column letter and its 1-based index in either direction. Provide exactly one of `letter` (e.g. \"AA\") or `number` (e.g. 27); the response always contains both.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Convert between a spreadsheet column letter and its 1-based index in either direction. Provide exactly one of `letter` (e.g. \"AA\") or `number` (e.g. 27); the response always contains both.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Convert between a spreadsheet column letter and its 1-based index in either direction. Provide exactly one of `letter` (e.g. \"AA\") or `number` (e.g. 27); the response always contains both.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/range":{"post":{"summary":"Parse an A1 range","description":"Parse an A1 range like \"A1:C10\" into its start and end cells (normalized so start is the top-left) and its extent — row count, column count and total cell count. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["parse a1 range","spreadsheet range extent","excel range parser","cell range dimensions","normalize a1 range","range cell count"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"range":{"type":"string","minLength":1,"maxLength":64,"description":"A1 range, e.g. \"A1:C10\"."}},"required":["range"],"additionalProperties":false},"example":{"range":"A1:C10"}}}},"responses":{"200":{"description":"`{ start, end, rows, columns, cells, normalized }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ start, end, rows, columns, cells, normalized }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Parse an A1 range like \"A1:C10\" into its start and end cells (normalized so start is the top-left) and its extent — row count, column count and total cell count.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Parse an A1 range like \"A1:C10\" into its start and end cells (normalized so start is the top-left) and its extent — row count, column count and total cell count.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Parse an A1 range like \"A1:C10\" into its start and end cells (normalized so start is the top-left) and its extent — row count, column count and total cell count.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}}},"x-service-info":{"categories":["compute"],"docs":{"homepage":"https://spreadsheet.openverbs.com","apiReference":"https://spreadsheet.openverbs.com/openapi.json"}}}