import requests
# API credentials
API_PUBLIC_KEY = "your_public_key"
API_PRIVATE_KEY = "your_private_key"
BASE_URL = "https://api.pingproxies.com/1.0/public"
# Headers for authentication
headers = {
    "X-API-Public-Key": API_PUBLIC_KEY,
    "X-API-Private-Key": API_PRIVATE_KEY,
    "Content-Type": "application/json"
}
def create_service_restricted_proxy_user(user_id, password, service_ids, metadata=None):
    """
    Create a proxy user with service-restricted access.
    Args:
        user_id: ID for the proxy user
        password: Password for the proxy user
        service_ids: List of service IDs to grant access to
        metadata: Optional metadata dictionary
    Returns:
        Tuple of (proxy_user_data, acl_ids) or (None, None) if failed
    """
    # Step 1: Create the proxy user with service_restricted access type
    create_user_payload = {
        "proxy_user_id": user_id,
        "proxy_user_password": password,
        "proxy_user_access_type": "service_restricted"
    }
    if metadata:
        create_user_payload["proxy_user_metadata"] = metadata
    response = requests.post(
        f"{BASE_URL}/user/proxy_user/create",
        json=create_user_payload,
        headers=headers
    )
    if response.status_code != 201:
        print(f"Error creating proxy user: {response.status_code}")
        print(response.text)
        return None, None
    user_data = response.json()
    print(f"Successfully created proxy user: {user_id}")
    # Step 2: Create ACL entries for each service
    acl_ids = []
    for service_id in service_ids:
        acl_payload = {
            "proxy_user_id": user_id,
            "service_id": service_id
        }
        acl_response = requests.post(
            f"{BASE_URL}/user/proxy_user_acl/create",
            json=acl_payload,
            headers=headers
        )
        if acl_response.status_code != 201:
            print(f"Error creating ACL for service {service_id}: {acl_response.status_code}")
            print(acl_response.text)
            continue
        acl_data = acl_response.json()
        acl_id = acl_data["created"][0]
        acl_ids.append(acl_id)
        print(f"Granted access to service: {service_id}")
    return user_data, acl_ids
# Example usage
if __name__ == "__main__":
    # Create an SEO team proxy user with access to two services
    USER_ID = "seo_team"
    PASSWORD = "securepassword123"
    SERVICE_IDS = ["API-SEO-001", "API-SEO-002"]
    METADATA = {
        "department": "SEO",
        "team_lead": "Jane Smith",
        "purpose": "keyword_research"
    }
    user_data, acl_ids = create_service_restricted_proxy_user(
        user_id=USER_ID,
        password=PASSWORD,
        service_ids=SERVICE_IDS,
        metadata=METADATA
    )
    if user_data:
        print("\n=== Setup Complete ===")
        print(f"Proxy User ID: {USER_ID}")
        print(f"Password: {PASSWORD}")
        print(f"Access Type: service_restricted")
        print(f"Services Granted: {', '.join(SERVICE_IDS)}")
        print(f"ACL Entries Created: {len(acl_ids)}")