Aller au contenu

SDK Ruby et exemples REST — TemplateFox

Deux façons d’utiliser l’API TemplateFox depuis Ruby :

  • SDK (gem templatefox) — client typé, généré automatiquement depuis notre spécification OpenAPI.
  • REST — net/http, de la bibliothèque standard. Pratique pour limiter les dépendances.

Les exemples de cette page montrent les deux côte à côte.

Version de la gem Dépôt GitHub

Ajoutez la gem à votre Gemfile :

gem 'templatefox'

Puis lancez bundle install, ou installez-la directement avec gem install templatefox.

La variante REST n’a besoin que de net/http (bibliothèque standard).

Définissez votre clé API une fois, puis réutilisez le client.

require 'templatefox'

TemplateFox.configure do |config|
config.api_key['ApiKeyAuth'] = ENV['TEMPLATEFOX_API_KEY']
end

api = TemplateFox::PDFApi.new

Seuls template_id et data sont obligatoires ; tous les autres champs sont facultatifs.

request = TemplateFox::CreatePdfRequest.new(
template_id: 'YOUR_TEMPLATE_ID',
data: {
  customer_name:  'John Doe',
  invoice_number: 'INV-001',
  amount:         '$1,234.56'
}
)

response = api.create_pdf(request)
puts response.url                # signed URL valid 24h
puts response.credits_remaining  # credits left on the team

Tous les paramètres sont détaillés dans Créer un PDF.

require 'open-uri'

response = api.create_pdf(request)
URI.open(response.url) do |pdf|
File.open('invoice.pdf', 'wb') { |f| f.write(pdf.read) }
end

Configurez l’intégration S3 une fois dans le tableau de bord, puis passez store_s3: true dans n’importe quel appel.

request = TemplateFox::CreatePdfRequest.new(
template_id:  'YOUR_TEMPLATE_ID',
data:         { invoice_number: 'INV-001' },
filename:     'invoice-001',           # no extension, .pdf appended
store_s3:     true,                     # upload to your configured bucket
s3_filepath:  'invoices/2026/04/'      # key prefix (optional)
# s3_bucket:  'custom-bucket'          # override bucket from integration
)

response = api.create_pdf(request)
puts "#{response.s3_bucket}/#{response.s3_key}"

Pour l’archivage ou les usages juridiques, demandez une variante PDF/A.

request = TemplateFox::CreatePdfRequest.new(
template_id: 'YOUR_TEMPLATE_ID',
data:        { customer_name: 'John Doe' },
pdf_variant: 'pdf/a-2b'   # "pdf/a-1b" | "pdf/a-2b" | "pdf/a-3b"
)

response = api.create_pdf(request)

Pour les gros documents ou les traitements par lots, passez par l’endpoint asynchrone. Le déroulé complet est décrit dans Créer un PDF (asynchrone).

response = tf_post('/v1/pdf/create-async', {
template_id:    'YOUR_TEMPLATE_ID',
data:           { invoice_number: 'INV-001' },
webhook_url:    'https://example.com/webhooks/pdf',
webhook_secret: 'whk_a1b2c3d4e5f6g7h8i9j0k1l2'   # HMAC-SHA256 signing
})

job_id = response['job_id']
# Poll GET /v1/pdf/jobs/{job_id} or wait for the webhook.

L’exemple ci-dessus appelle l’API REST directement, avec net/http.

begin
response = api.create_pdf(request)
rescue TemplateFox::ApiError => e
puts "status=#{e.code} body=#{e.response_body}"
end

La liste complète est dans Codes d’erreur.

ClasseMéthodeEndpoint
PDFApicreate_pdfPOST /v1/pdf/create
TemplatesApilist_templatesGET /v1/templates
TemplatesApiget_template_fieldsGET /v1/templates/{id}/fields
AccountApiget_accountGET /v1/account
AccountApilist_transactionsGET /v1/account/transactions
IntegrationsApisave_s3_configPOST /v1/integrations/s3
IntegrationsApiget_s3_configGET /v1/integrations/s3
IntegrationsApidelete_s3_configDELETE /v1/integrations/s3
IntegrationsApitest_s3_connectionPOST /v1/integrations/s3/test

Tous les endpoints REST sont documentés dans la référence API.