나이지리아 정부 수수료 API: AI 기반 공공 서비스 데이터
Source: Dev.to
내가 만든 것
나는 나이지리아 정부 및 공공 유틸리티 수수료 API를 만들었습니다. 이는 검증된 구조화된 정보를 제공하는 프로덕션‑레디 REST API로, 나이지리아 정부 수수료와 공공 유틸리티 비용에 대한 추적 가능한 데이터를 제공합니다. 여러 나이지리아 기관의 데이터를 하나의 접근 가능한 엔드포인트로 중앙화합니다.
나이지리아에서는 시민들이 다음과 같은 서비스의 공식 비용 정보를 찾기 위해 종종 어려움을 겪습니다:
- 국가 신분 번호(NIN) 서비스
- WAEC / NECO / JAMB 시험 수수료
- 여권 및 신분 관련 절차
- 다양한 전력 배전회사(DisCos)의 전기 요금
- 기타 정부가 규제하는 공공 수수료
문제점
대부분의 나이지리아인에게 정확한 정부 수수료 정보를 찾는 일은 좌절감을 줍니다. 정보는 보통 PDF, 오래된 웹사이트 또는 비공식 출처에 흩어져 있습니다. 이 API는 그 데이터를 깔끔하고 개발자 친화적인 백엔드로 중앙화하여 애플리케이션, 챗봇, 대시보드 및 AI 에이전트가 신뢰성 있게 활용할 수 있도록 합니다.
해결책
다음과 같은 단일 API 제공:
- 6개 카테고리(신분, 이민, 교육, 전기, 교통, 비즈니스)에서 90개 이상의 검증된 정부 수수료
- 6개 공식 기관: NIMC, NIS, NECO, JAMB, NERC, UNILAG
- JavaScript, Python, cURL 예제가 포함된 완전한 문서
- 풍부한 관계 데이터: 모든 수수료에 카테고리, 기관, 공식 출처 정보 포함
- 검색 및 필터링: 필요한 정보를 즉시 찾을 수 있음
API는 다음에 중점을 두고 구축되었습니다:
- 공식 데이터 소스
- 추적 가능성
- 유지 보수성
- 실제 프로덕션 사용
실제 API URL: https://xmlb-8xh6-ww1h.n7e.xano.io/api:public
API 문서
API는 간단하고 예측 가능한 REST 구조를 따릅니다.
핵심 리소스
- 카테고리(예: 신분 및 관리, 교육, 전기)
- 하위 카테고리(예: NIN, NECO, JAMB, 여권, DisCos)
- 수수료(개별 결제 항목)
- 기관(정부 부처)
- 출처(공식 문서 및 웹사이트)
기본 URL
https://xmlb-8xh6-ww1h.n7e.xano.io/api:public
인증
쿼리 파라미터를 통한 API 키: ?api_key=YOUR_KEY
테스트 API 키: nga_b6cf98a60bda43ba8cf54af9dbd87260
사용 가능한 엔드포인트
1. POST /api_key/generate
보안 엔드포인트에 접근하기 위한 API 키를 생성합니다.
curl -X POST 'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public/api_key/generate' \
-H 'Content-Type: application/json' \
--data '{"user_email":"your-email@example.com"}'
2. GET /fees
옵션 필터링이 가능한 페이지네이션된 수수료 목록을 가져옵니다.
파라미터
category(선택) – 카테고리 이름/슬러그로 필터링state(선택) – 주(state)로 필터링search(선택) – 이름 및 설명 검색page(선택, 기본: 1) – 페이지 번호per_page(선택, 기본: 20, 최대: 100) – 페이지당 결과 수
예시
curl 'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public/fees?category=identity&per_page=5'
3. GET /fees/{id}
ID로 단일 수수료를 가져오며 모든 관계 데이터를 포함합니다.
예시
curl 'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public/fees/1?api_key=nga_b6cf98a60bda43ba8cf54af9dbd87260'
4. GET /fees/search
이름 및 설명을 기준으로 수수료를 검색합니다(최소 2자).
예시
curl 'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public/fees/search?q=passport&api_key=nga_b6cf98a60bda43ba8cf54af9dbd87260'
5. GET /categories
수수료 개수를 포함한 모든 카테고리를 가져옵니다.
예시
curl 'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public/categories?api_key=nga_b6cf98a60bda43ba8cf54af9dbd87260'
6. GET /metadata
API 통계 및 버전 정보를 가져옵니다.
예시
curl 'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public/metadata?api_key=nga_b6cf98a60bda43ba8cf54af9dbd87260'
속도 제한
현재 속도 제한은 적용되지 않습니다. 향후 속도 제한을 위한 요청 추적은 구현되어 있습니다.
응답 형식
모든 응답은 JSON 형식입니다. 오류는 표준화된 형식을 따릅니다:
{
"code": "ERROR_CODE_TYPE",
"message": "Human-readable error message"
}
전체 문서는 내 GitHub 저장소에 있으며, 요청/응답 예시, 오류 처리 및 통합 가이드를 포함하고 있습니다.
데모
예시 1 – API 키 생성
요청
curl -X POST 'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public/api_key/generate' \
-H 'Content-Type: application/json' \
--data '{"user_email":"your-email@example.com"}'
응답
{
"success": true,
"api_key": "nga_********************************",
"message": "API key generated successfully. Please save this key as it provides access to the API."
}
예시 2 – 모든 카테고리 가져오기
요청
curl -X GET \
'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public/categories?api_key=nga_b6cf98a60bda43ba8cf54af9dbd87260' \
-H 'accept: application/json'
응답
[
{
"id": 1,
"display_name": "Identity & Management",
"description": "Fees related to national identity systems such as NIN",
"fee_count": 19
},
{
"id": 2,
"display_name": "Immigration",
"description": "Passport and visa related fees",
"fee_count": 10
},
{
"id": 3,
"display_name": "Education",
"description": "NECO, JAMB and related examination fees",
"fee_count": 45
}
]
예시 3 – NIN 수수료 검색
요청
curl -X GET \
'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public/fees/search?q=NIN&api_key=nga_b6cf98a60bda43ba8cf54af9dbd87260' \
-H 'accept: application/json'
응답
[
{
"id": 1,
"name": "NIN Enrolment (First Time)",
"amount": 0,
"currency": "NGN",
"service_type": "Standard",
"description": "Initial NIN enrollment is free",
"category_name": "Identity & Management",
"agency_name": "National Identity Management Commission",
"subcategory_name": "NIN",
"source_name": "NIMC"
}
]
예시 4 – 수수료 상세 정보 가져오기
요청
curl -X GET \
'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public/fees/20?api_key=nga_b6cf98a60bda43ba8cf54af9dbd87260' \
-H 'accept: application/json'
응답
{
"id": 20,
"name": "Standard Passport 32 Pages (5-Year Validity)",
"amount": 100000,
"currency": "NGN",
"service_type": "Standard",
"description": "New or Renewal",
"subcategory": {
"id": 3,
"name": "Passport",
"category": {
"id": 2,
"name": "Immigration",
"description": "Passport and visa related fees"
}
},
"source": {
"id": 2,
"name": "Nigerian Immigration Service (NIS)",
"agency": {
"id": 2,
"name": "Nigeria Immigration Service",
"website": "https://immigration.gov.ng"
}
}
}
코드 통합 예시
JavaScript
const BASE_URL = 'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public';
const API_KEY = 'YOUR_API_KEY';
// Example: fetch all categories
fetch(`${BASE_URL}/categories?api_key=${API_KEY}`)
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
Python
import requests
BASE_URL = 'https://xmlb-8xh6-ww1h.n7e.xano.io/api:public'
API_KEY = 'YOUR_API_KEY'
# Example: search for passport fees
params = {'q': 'passport', 'api_key': API_KEY}
response = requests.get(f'{BASE_URL}/fees/search', params=params)
print(response.json())
cURL
curl "https://xmlb-8xh6-ww1h.n7e.xano.io/api:public/fees?category=education&api_key=YOUR_API_KEY"