2 Servicios 80 CUIT 20111111112 1 1 20130708 1605 1000 500 0 0 105 20130708 20130708 20130708 PES 1 1 5 21% 500 105
</ar:FeDetReq> </ar:FeCAEReq> </ar:FECAESolicitar> </soapenv:Body> </soapenv:Envelope>
```
--------------------------------
### GitHub Pages Deployment Workflow using GitHub Actions
Source: https://context7.com/freedomsage/arcadocs/llms.txt
Automated GitHub Actions workflow to build and deploy documentation site to GitHub Pages. Configured to trigger on pushes to main branch or manual workflow dispatch. Uses Ubuntu runner environment with proper permissions for GitHub Pages deployment. Requires documentation files in ./docs directory.
```YAML
name: Deploy to GitHub Pages
on:
push:
branches: ["main"]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './docs'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
```
--------------------------------
### Jekyll site configuration for GitHub Pages
Source: https://context7.com/freedomsage/arcadocs/llms.txt
YAML configuration file for a Jekyll site that sets the title, description, theme, includes OpenAPI specs and markdown files, excludes build artifacts, and defines markdown processing and permalink style. Used by GitHub Pages to render the documentation site.
```yaml
# _config.yml\ntitle: ARCA AFIP - Facturación Electrónica API Documentation\ndescription: Official API documentation for ARCA AFIP Electronic Invoicing Web Services v4.0\ntheme: jekyll-theme-cayman\n\n# Include OpenAPI specs and markdown files\ninclude:\n - openapi\n - "*.md"\n - "**/README.md"\n\n# Exclude build files\nexclude:\n - Gemfile\n - Gemfile.lock\n - node_modules\n - vendor\n\n# Markdown processing\nmarkdown: kramdown\nkramdown:\n input: GFM\n hard_wrap: false\n\n# Permalinks\npermalink: pretty
```
--------------------------------
### GitHub MCP Server Integration (Bash and JSON)
Source: https://context7.com/freedomsage/arcadocs/llms.txt
This snippet integrates a GitHub MCP server for repository management using Docker and JSON configuration. It requires a GitHub Personal Access Token and supports read-only or full access modes. Inputs are the token and environment variables; outputs are server instance management. Limitations include dependency on Docker and valid token credentials.
```bash
# Set GitHub Personal Access Token
export GITHUB_PERSONAL_ACCESS_TOKEN="ghp_your_token_here"
# Run in read-only mode (safe for exploration)
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN \
ghcr.io/github/github-mcp-server --read-only
# Run with full access (for automation)
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN \
-e GITHUB_TOOLSETS="repos,issues,pull_requests,actions" \
ghcr.io/github/github-mcp-server
# Alternative: Build from source
# (if github-mcp-server binary is present)
./github-mcp-server stdio --read-only
```
```json
{
"servers": {
"github": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
}
}
}
}
```
--------------------------------
### Embed ReDoc interactive documentation page
Source: https://context7.com/freedomsage/arcadocs/llms.txt
HTML page that loads ReDoc to render the OpenAPI specification and provides a dropdown to switch between testing and production environments. Uses inline JavaScript to dynamically load the correct YAML file based on selection. No external dependencies beyond the Redoc CDN script.
```html
\n\n\n ARCA AFIP - Facturación Electrónica API Documentation\n \n \n \n\n\n \n \n \n
\n\n \n\n \n \n\n
```
--------------------------------
### AFIP Electronic Invoice SOAP Response - XML Implementation
Source: https://github.com/freedomsage/arcadocs/blob/main/docs/cae/README.md
Complete SOAP response envelope from AFIP FECAESolicitar service showing invoice authorization result. Includes header response with process details and detailed response with generated CAE authorization code and expiry date.
```XML
23000000004 2 49 20130715130307 1 A N 1 91 11111111111 1 1 20130715 A 63288001286628 20130725
```
--------------------------------
### GitHub Pages configuration verification script
Source: https://context7.com/freedomsage/arcadocs/llms.txt
Bash script that checks for the GitHub CLI, validates the GitHub Pages settings for the repository, and reports the status of the latest Pages workflow. It provides manual instructions if the CLI is missing or Pages are not configured.
```bash
#!/bin/bash\n\nREPO=\"Freedomsage/arcadocs\"\nPAGES_URL=\"https://freedomsage.github.io/arcadocs/\"\n\necho \"🔍 Checking GitHub Pages configuration...\"\n\n# Check if gh CLI is available\nif ! command -v gh &> /dev/null; then\n echo \"❌ GitHub CLI (gh) not installed\"\n echo \"📖 Manual setup required:\"\n echo \" 1. Go to: https://github.com/$REPO/settings/pages\"\n echo \" 2. Set Source to 'GitHub Actions'\"\n echo \" 3. Save and push changes\"\n exit 1\nfi\n\n# Check Pages status\necho \"📊 Checking repository settings...\"\npages_status=$(gh api repos/$REPO/pages 2>&1)\n\nif echo \"$pages_status\" | grep -q \"404\"; then\n echo \"⚠️ GitHub Pages not configured yet\"\n echo \"🔧 To enable:\"\n echo \" 1. Visit: https://github.com/$REPO/settings/pages\"\n echo \" 2. Under 'Source', select 'GitHub Actions'\"\n echo \" 3. Click 'Save'\"\nelif echo \"$pages_status\" | grep -q \"build_type\"; then\n echo \"✅ GitHub Pages is configured\"\n echo \"🌐 Your site: $PAGES_URL\"\nelse\n echo \"❌ Could not determine Pages status\"\nfi\n\n# Check workflow status\necho \"🔄 Checking workflow runs...\"\nworkflow_status=$(gh run list --workflow=pages.yml --limit=1 --json status,conclusion 2>&1)\n\nif echo \"$workflow_status\" | grep -q \"completed.*success\"; then\n echo \"✅ Latest deployment successful\"\n echo \"🎉 Documentation available at: $PAGES_URL\"\nelif echo \"$workflow_status\" | grep -q \"in_progress\"; then\n echo \"⏳ Deployment in progress...\"\nelse\n echo \"📝 No deployments yet. Push to trigger workflow.\"\nfi
```
--------------------------------
### SOAP Response for FECAESolicitar with Errors
Source: https://github.com/freedomsage/arcadocs/blob/main/docs/cae/README.md
This XML SOAP response from AFIP indicates rejection of the CAE request due to errors in record counts and unregistered sales point. It includes a result header and error details. Outputs approval status and error codes; requires parsing to handle rejections in electronic invoicing workflows.
```xml
2 15 1 FACTURA A 20100902 R A=APROBADO, R=RECHAZADO, P=PARCIAL N 10002 No coincide la cantidad de registros informadas con la cantidad real enviada < /Msg> 1005 El punto de venta no se encuentra empadronado
```
--------------------------------
### Generate OpenAPI 3.0 Specification from WSDL using Python
Source: https://context7.com/freedomsage/arcadocs/llms.txt
Parse WSDL files and generate OpenAPI 3.0 specifications for testing and production environments. Requires XML parsing and YAML output capabilities. Takes WSDL file path, environment name, and base URL as inputs. Outputs structured OpenAPI YAML files with defined endpoints and schemas.
```Python
#!/usr/bin/env python3
import xml.etree.ElementTree as ET
import yaml
def parse_wsdl_operations(wsdl_file):
"""Extract operation names from WSDL"""
tree = ET.parse(wsdl_file)
root = tree.getroot()
namespaces = {
'wsdl': 'http://schemas.xmlsoap.org/wsdl/',
'soap': 'http://schemas.xmlsoap.org/wsdl/soap/',
}
operations = []
for port_type in root.findall('.//wsdl:portType', namespaces):
for operation in port_type.findall('wsdl:operation', namespaces):
op_name = operation.get('name')
if op_name:
operations.append(op_name)
return operations
def create_openapi_spec(wsdl_file, environment, base_url):
"""Generate OpenAPI 3.0 specification"""
operations = parse_wsdl_operations(wsdl_file)
spec = {
'openapi': '3.0.3',
'info': {
'title': f'ARCA AFIP - Facturación Electrónica Web Service ({environment})',
'version': '4.0.0',
'description': f'''# ARCA AFIP Electronic Invoicing API
**Environment:** {environment}
**Base URL:** {base_url}
## Authentication
All methods require a Ticket de Acceso from WSAA:
1. Get digital certificate from Clave Fiscal
2. Associate with "Facturación Electrónica" service
3. Request Access Ticket with service="wsfe"
4. Ticket valid for 12 hours
''',
'contact': {
'name': 'ARCA Support',
'url': 'http://www.arca.gob.ar/ws/',
'email': 'wsfev1@arca.gov.ar'
}
},
'servers': [{'url': base_url, 'description': f'{environment} environment'}],
'paths': {},
'components': {
'schemas': {
'FEAuthRequest': {
'type': 'object',
'required': ['Token', 'Sign', 'Cuit'],
'properties': {
'Token': {'type': 'string', 'description': 'Token from WSAA'},
'Sign': {'type': 'string', 'description': 'Signature from WSAA'},
'Cuit': {'type': 'integer', 'format': 'int64', 'description': 'Taxpayer CUIT'}
}
}
}
}
}
# Add each operation as a POST endpoint
for operation in operations:
spec['paths'][f'/{operation}'] = {
'post': {
'summary': operation,
'operationId': operation.lower(),
'requestBody': {
'required': True,
'content': {
'application/xml': {
'schema': {'type': 'object'},
'example': '...'
}
}
},
'responses': {
'200': {'description': 'Successful response'},
'400': {'description': 'Bad request'},
'500': {'description': 'Internal server error'}
}
}
}
return spec
# Generate specs for both environments
homologacion_spec = create_openapi_spec(
'openapi/homologacion.wsdl',
'Homologación (Testing)',
'https://wswhomo.afip.gov.ar/wsfev1/service.asmx'
)
produccion_spec = create_openapi_spec(
'openapi/produccion.wsdl',
'Producción (Production)',
'https://servicios1.afip.gov.ar/wsfev1/service.asmx'
)
# Save as YAML
with open('openapi/homologacion.yaml', 'w', encoding='utf-8') as f:
yaml.dump(homologacion_spec, f, allow_unicode=True, sort_keys=False)
with open('openapi/produccion.yaml', 'w', encoding='utf-8') as f:
yaml.dump(produccion_spec, f, allow_unicode=True, sort_keys=False)
print("✓ Created OpenAPI specifications")
```