affixapi 0.0.4 → 1.1.35

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e3a8e5ab8c6957c674eb3321d6468716f7945723e2adff016cb5cf08a5e16b7f
4
- data.tar.gz: f728cba428757fe8006e6541bb49f3e50b2b8044569a8ca3b7500d53aa71ae08
3
+ metadata.gz: f842f88b4f852eddbd3b6c35486125a88e380e0e6dfcc056ca47fee2aea40e44
4
+ data.tar.gz: 5d77b9b455bfdd51496c89f9796151e3ab8c6265cb023c61df838d40d1448f73
5
5
  SHA512:
6
- metadata.gz: b9ff0c7ff959cd4cd45796d289e1062a2c94502fc7a24d80df33f3a2dfca1d8b792048e32939b5de845197f90f5de4bbde203fa9b14d9d88eece39342c540ef0
7
- data.tar.gz: f35493094ac4f040c7d2cd0edcf3b9d6033b65e0ecb97fc10b5170575f745b6a1c55f4a8ee735941daaa432d80fbf8ce56bffa3b3acf71ace633d3d4966ff390
6
+ metadata.gz: f2e693a147b3e61ba2a1cd8e1398a3a37f72259970f7dcca0dd7f63cbf0fa66babc671c25a00779a196b02befd604c039d166b7c84ff24a9452c00e4cfee5a48
7
+ data.tar.gz: 62db15de366295125e29f999eeddd760adb4b97aa2bf6262b7e33df6a274e7f8a7a351a091f1b369e3fc9f77ee23aba9e450d00de55c603b632a770117b912c8
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- affixapi (0.0.4)
4
+ affixapi (1.1.35)
5
5
  typhoeus (~> 1.0, >= 1.0.1)
6
6
 
7
7
  GEM
@@ -42,13 +42,17 @@ module OpenapiClient
42
42
  EMPLOYMENT_HERO = "employment hero".freeze
43
43
  FACTORIALHR = "factorialhr".freeze
44
44
  FOURTHHR = "fourthhr".freeze
45
+ GUSTO = "gusto".freeze
45
46
  ITRENT = "itrent".freeze
47
+ JUSTWORKS = "justworks".freeze
46
48
  OYSTERHR = "oysterhr".freeze
47
49
  PAYCIRCLE = "paycircle".freeze
48
50
  PENTO_IO = "pento.io".freeze
49
51
  PEOPLEHR = "peoplehr".freeze
50
52
  REMOTE_COM = "remote.com".freeze
53
+ RIPPLING = "rippling".freeze
51
54
  SAGEONE = "sageone".freeze
55
+ SHAPE_PAYROLL = "shape payroll".freeze
52
56
  SIMPLEPAY_IE = "simplepay.ie".freeze
53
57
 
54
58
  # Builds the enum from string
@@ -42,13 +42,17 @@ module OpenapiClient
42
42
  EMPLOYMENT_HERO = "employment hero".freeze
43
43
  FACTORIALHR = "factorialhr".freeze
44
44
  FOURTHHR = "fourthhr".freeze
45
+ GUSTO = "gusto".freeze
45
46
  ITRENT = "itrent".freeze
47
+ JUSTWORKS = "justworks".freeze
46
48
  OYSTERHR = "oysterhr".freeze
47
49
  PAYCIRCLE = "paycircle".freeze
48
50
  PENTO_IO = "pento.io".freeze
49
51
  PEOPLEHR = "peoplehr".freeze
50
52
  REMOTE_COM = "remote.com".freeze
53
+ RIPPLING = "rippling".freeze
51
54
  SAGEONE = "sageone".freeze
55
+ SHAPE_PAYROLL = "shape payroll".freeze
52
56
  SIMPLEPAY_IE = "simplepay.ie".freeze
53
57
 
54
58
  # Builds the enum from string
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Affix API
3
3
 
4
- #The affixapi.com API documentation. # Introduction Affix API is an OAuth 2.1 application that allows developers to access customer data, without developers needing to manage or maintain integrations; or collect login credentials or API keys from users for these third party systems. # OAuth 2.1 Affix API follows the [OAuth 2.1 spec](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-08). As an OAuth application, Affix API handles not only both the collection of sensitive user credentials or API keys, but also builds and maintains the integrations with the providers, so you don't have to. # How to obtain an access token in order to get started, you must: - register a `client_id` - direct your user to the sign in flow (`https://connect.affixapi.com` [with the appropriate query parameters](https://github.com/affixapi/starter-kit/tree/master/connect)) - capture `authorization_code` we will send to your redirect URI after the sign in flow is complete and exchange that `authorization_code` for a Bearer token # Sandbox keys (developer mode) ### dev ``` eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6ImQ1OTZhMmYzLWYzNzktNGE1ZC1hMmRhLTk4OWJmYWViYTg1ZCIsImlhdCI6MTcwMjkyMDkwMywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5kZXYuZW5naW5lZXJpbmcuYWZmaXhhcGkuY29tIiwic3ViIjoiZGV2ZWxvcGVyIiwiYXVkIjoiM0ZEQUVERjktMURDQTRGNTQtODc5NDlGNkEtNDEwMjc2NDMifQ.VLWYjCQvBS0C3ZA6_J3-U-idZj5EYI2IlDdTjAWBxSIHGufp6cqaVodKsF2BeIqcIeB3P0lW-KL9mY3xGd7ckQ ``` #### `employees` endpoint sample: ``` curl --fail \\ -X GET \\ -H 'Authorization: Bearer eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6ImQ1OTZhMmYzLWYzNzktNGE1ZC1hMmRhLTk4OWJmYWViYTg1ZCIsImlhdCI6MTcwMjkyMDkwMywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5kZXYuZW5naW5lZXJpbmcuYWZmaXhhcGkuY29tIiwic3ViIjoiZGV2ZWxvcGVyIiwiYXVkIjoiM0ZEQUVERjktMURDQTRGNTQtODc5NDlGNkEtNDEwMjc2NDMifQ.VLWYjCQvBS0C3ZA6_J3-U-idZj5EYI2IlDdTjAWBxSIHGufp6cqaVodKsF2BeIqcIeB3P0lW-KL9mY3xGd7ckQ' \\ 'https://dev.api.affixapi.com/2023-03-01/developer/employees' ``` ### prod ``` eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6IjI5YjFjYTg4LWNlNjktNDgyZC1iNGZjLTkzMWMzZmJkYWM4ZSIsImlhdCI6MTcwMjkyMTA4MywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5wcm9kLmVuZ2luZWVyaW5nLmFmZml4YXBpLmNvbSIsInN1YiI6ImRldmVsb3BlciIsImF1ZCI6IjA4QkIwODFFLUQ5QUI0RDE0LThERjk5MjMzLTY2NjE1Q0U5In0.2zdpFAmiyYiYk6MOcbXNUwwR4M1Fextnaac340x54AidiWXCyw-u9KeavbqfYF6q8a9kcDLrxhJ8Wc_3tIzuVw ``` #### `employees` endpoint sample: ``` curl --fail \\ -X GET \\ -H 'Authorization: Bearer eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6IjI5YjFjYTg4LWNlNjktNDgyZC1iNGZjLTkzMWMzZmJkYWM4ZSIsImlhdCI6MTcwMjkyMTA4MywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5wcm9kLmVuZ2luZWVyaW5nLmFmZml4YXBpLmNvbSIsInN1YiI6ImRldmVsb3BlciIsImF1ZCI6IjA4QkIwODFFLUQ5QUI0RDE0LThERjk5MjMzLTY2NjE1Q0U5In0.2zdpFAmiyYiYk6MOcbXNUwwR4M1Fextnaac340x54AidiWXCyw-u9KeavbqfYF6q8a9kcDLrxhJ8Wc_3tIzuVw' \\ 'https://api.affixapi.com/2023-03-01/developer/employees' ``` # Webhooks An exciting feature for HR/Payroll modes are webhooks. If enabled, your `webhook_uri` is set on your `client_id` for the respective environment: `dev | prod` Webhooks are configured to make live requests to the underlying integration 1x/hr, and if a difference is detected since the last request, we will send a request to your `webhook_uri` with this shape: ``` { added: <api.v20230301.Employees>[ <api.v20230301.Employee>{ ..., date_of_birth: '2010-08-06', display_full_name: 'Daija Rogahn', employee_number: '57993', employment_status: 'pending', employment_type: 'other', employments: [ { currency: 'eur', effective_date: '2022-02-25', employment_type: 'other', job_title: 'Dynamic Implementation Manager', pay_frequency: 'semimonthly', pay_period: 'YEAR', pay_rate: 96000, }, ], first_name: 'Daija', ... } ], removed: [], updated: [ <api.v20230301.Employee>{ ..., date_of_birth: '2009-11-09', display_full_name: 'Lourdes Stiedemann', employee_number: '63189', employment_status: 'leave', employment_type: 'full_time', employments: [ { currency: 'gbp', effective_date: '2023-01-16', employment_type: 'full_time', job_title: 'Forward Brand Planner', pay_frequency: 'semimonthly', pay_period: 'YEAR', pay_rate: 86000, }, ], first_name: 'Lourdes', } ] } ``` the following headers will be sent with webhook requests: ``` x-affix-api-signature: ab8474e609db95d5df3adc39ea3add7a7544bd215c5c520a30a650ae93a2fba7 x-affix-api-origin: webhooks-employees-webhook user-agent: affixapi.com ``` Before trusting the payload, you should sign the payload and verify the signature matches the signature sent by the `affixapi.com` service. This secures that the data sent to your `webhook_uri` is from the `affixapi.com` server. The signature is created by combining the signing secret (your `client_secret`) with the body of the request sent using a standard HMAC-SHA256 keyed hash. The signature can be created via: - create an `HMAC` with your `client_secret` - update the `HMAC` with the payload - get the hex digest -> this is the signature Sample `typescript` code that follows this recipe: ``` import { createHmac } from 'crypto'; export const computeSignature = ({ str, signingSecret, }: { signingSecret: string; str: string; }): string => { const hmac = createHmac('sha256', signingSecret); hmac.update(str); const signature = hmac.digest('hex'); return signature; }; ``` ## Rate limits Open endpoints (not gated by an API key) (applied at endpoint level): - 15 requests every 1 minute (by IP address) - 25 requests every 5 minutes (by IP address) Gated endpoints (require an API key) (applied at endpoint level): - 40 requests every 1 minute (by IP address) - 40 requests every 5 minutes (by `client_id`) Things to keep in mind: - Open endpoints (not gated by an API key) will likely be called by your users, not you, so rate limits generally would not apply to you. - As a developer, rate limits are applied at the endpoint granularity. - For example, say the rate limits below are 10 requests per minute by ip. from that same ip, within 1 minute, you get: - 10 requests per minute on `/orders`, - another 10 requests per minute on `/items`, - and another 10 requests per minute on `/identity`, - for a total of 30 requests per minute.
4
+ #The affixapi.com API documentation. # Introduction Affix API is an OAuth 2.1 application that allows developers to access customer data, without developers needing to manage or maintain integrations; or collect login credentials or API keys from users for these third party systems. # OAuth 2.1 Affix API follows the [OAuth 2.1 spec](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-08). As an OAuth application, Affix API handles not only both the collection of sensitive user credentials or API keys, but also builds and maintains the integrations with the providers, so you don't have to. # How to obtain an access token in order to get started, you must: - register a `client_id` - direct your user to the sign in flow (`https://connect.affixapi.com` [with the appropriate query parameters](https://github.com/affixapi/starter-kit/tree/master/connect)) - capture `authorization_code` we will send to your redirect URI after the sign in flow is complete and exchange that `authorization_code` for a Bearer token # Sandbox keys (developer mode) ### dev ``` eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6ImQ1OTZhMmYzLWYzNzktNGE1ZC1hMmRhLTk4OWJmYWViYTg1ZCIsImlhdCI6MTcwMjkyMDkwMywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5kZXYuZW5naW5lZXJpbmcuYWZmaXhhcGkuY29tIiwic3ViIjoiZGV2ZWxvcGVyIiwiYXVkIjoiM0ZEQUVERjktMURDQTRGNTQtODc5NDlGNkEtNDEwMjc2NDMifQ.VLWYjCQvBS0C3ZA6_J3-U-idZj5EYI2IlDdTjAWBxSIHGufp6cqaVodKsF2BeIqcIeB3P0lW-KL9mY3xGd7ckQ ``` #### `employees` endpoint sample: ``` curl --fail \\ -X GET \\ -H 'Authorization: Bearer eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6ImQ1OTZhMmYzLWYzNzktNGE1ZC1hMmRhLTk4OWJmYWViYTg1ZCIsImlhdCI6MTcwMjkyMDkwMywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5kZXYuZW5naW5lZXJpbmcuYWZmaXhhcGkuY29tIiwic3ViIjoiZGV2ZWxvcGVyIiwiYXVkIjoiM0ZEQUVERjktMURDQTRGNTQtODc5NDlGNkEtNDEwMjc2NDMifQ.VLWYjCQvBS0C3ZA6_J3-U-idZj5EYI2IlDdTjAWBxSIHGufp6cqaVodKsF2BeIqcIeB3P0lW-KL9mY3xGd7ckQ' \\ 'https://dev.api.affixapi.com/2023-03-01/developer/employees' ``` ### prod ``` eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6IjI5YjFjYTg4LWNlNjktNDgyZC1iNGZjLTkzMWMzZmJkYWM4ZSIsImlhdCI6MTcwMjkyMTA4MywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5wcm9kLmVuZ2luZWVyaW5nLmFmZml4YXBpLmNvbSIsInN1YiI6ImRldmVsb3BlciIsImF1ZCI6IjA4QkIwODFFLUQ5QUI0RDE0LThERjk5MjMzLTY2NjE1Q0U5In0.2zdpFAmiyYiYk6MOcbXNUwwR4M1Fextnaac340x54AidiWXCyw-u9KeavbqfYF6q8a9kcDLrxhJ8Wc_3tIzuVw ``` #### `employees` endpoint sample: ``` curl --fail \\ -X GET \\ -H 'Authorization: Bearer eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6IjI5YjFjYTg4LWNlNjktNDgyZC1iNGZjLTkzMWMzZmJkYWM4ZSIsImlhdCI6MTcwMjkyMTA4MywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5wcm9kLmVuZ2luZWVyaW5nLmFmZml4YXBpLmNvbSIsInN1YiI6ImRldmVsb3BlciIsImF1ZCI6IjA4QkIwODFFLUQ5QUI0RDE0LThERjk5MjMzLTY2NjE1Q0U5In0.2zdpFAmiyYiYk6MOcbXNUwwR4M1Fextnaac340x54AidiWXCyw-u9KeavbqfYF6q8a9kcDLrxhJ8Wc_3tIzuVw' \\ 'https://api.affixapi.com/2023-03-01/developer/employees' ``` # Webhooks An exciting feature for HR/Payroll modes are webhooks. If enabled, your `webhook_uri` is set on your `client_id` for the respective environment: `dev | prod` Webhooks are configured to make live requests to the underlying integration 1x/hr, and if a difference is detected since the last request, we will send a request to your `webhook_uri` with this shape: ``` { added: <api.v20230301.Employees>[ <api.v20230301.Employee>{ ..., date_of_birth: '2010-08-06', display_full_name: 'Daija Rogahn', employee_number: '57993', employment_status: 'pending', employment_type: 'other', employments: [ { currency: 'eur', effective_date: '2022-02-25', employment_type: 'other', job_title: 'Dynamic Implementation Manager', pay_frequency: 'semimonthly', pay_period: 'YEAR', pay_rate: 96000, }, ], first_name: 'Daija', ... } ], removed: [], updated: [ <api.v20230301.Employee>{ ..., date_of_birth: '2009-11-09', display_full_name: 'Lourdes Stiedemann', employee_number: '63189', employment_status: 'leave', employment_type: 'full_time', employments: [ { currency: 'gbp', effective_date: '2023-01-16', employment_type: 'full_time', job_title: 'Forward Brand Planner', pay_frequency: 'semimonthly', pay_period: 'YEAR', pay_rate: 86000, }, ], first_name: 'Lourdes', } ] } ``` the following headers will be sent with webhook requests: ``` x-affix-api-signature: ab8474e609db95d5df3adc39ea3add7a7544bd215c5c520a30a650ae93a2fba7 x-affix-api-origin: webhooks-employees-webhook user-agent: affixapi.com ``` Before trusting the payload, you should sign the payload and verify the signature matches the signature sent by the `affixapi.com` service. This secures that the data sent to your `webhook_uri` is from the `affixapi.com` server. The signature is created by combining the signing secret (your `client_secret`) with the body of the request sent using a standard HMAC-SHA256 keyed hash. The signature can be created via: - create an `HMAC` with your `client_secret` - update the `HMAC` with the payload - get the hex digest -> this is the signature Sample `typescript` code that follows this recipe: ``` import { createHmac } from 'crypto'; export const computeSignature = ({ str, signingSecret, }: { signingSecret: string; str: string; }): string => { const hmac = createHmac('sha256', signingSecret); hmac.update(str); const signature = hmac.digest('hex'); return signature; }; ``` ## Rate limits Open endpoints (not gated by an API key) (applied at endpoint level): - 15 requests every 1 minute (by IP address) - 25 requests every 5 minutes (by IP address) Gated endpoints (require an API key) (applied at endpoint level): - 40 requests every 1 minute (by IP address) - 40 requests every 5 minutes (by `client_id`) Things to keep in mind: - Open endpoints (not gated by an API key) will likely be called by your users, not you, so rate limits generally would not apply to you. - As a developer, rate limits are applied at the endpoint granularity. - For example, say the rate limits below are 10 requests per minute by ip. from that same ip, within 1 minute, you get: - 10 requests per minute on `/orders`, - another 10 requests per minute on `/items`, - and another 10 requests per minute on `/identity`, - for a total of 30 requests per minute.
5
5
 
6
6
  The version of the OpenAPI document: 2023-03-01
7
7
  Contact: developers@affixapi.com
@@ -11,5 +11,5 @@ OpenAPI Generator version: 5.1.1
11
11
  =end
12
12
 
13
13
  module OpenapiClient
14
- VERSION = '0.0.4'
14
+ VERSION = '1.1.35'
15
15
  end
@@ -3,10 +3,10 @@ current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/
3
3
  creating Makefile
4
4
 
5
5
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/byebug-11.1.3/ext/byebug
6
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-ytx9mw sitelibdir\=./.gem.20240217-1744-ytx9mw clean
6
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-l50ihl sitelibdir\=./.gem.20240227-1787-l50ihl clean
7
7
 
8
8
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/byebug-11.1.3/ext/byebug
9
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-ytx9mw sitelibdir\=./.gem.20240217-1744-ytx9mw
9
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-l50ihl sitelibdir\=./.gem.20240227-1787-l50ihl
10
10
  compiling breakpoint.c
11
11
  compiling byebug.c
12
12
  byebug.c: In function ‘check_started’:
@@ -35,8 +35,8 @@ compiling threads.c
35
35
  linking shared-object byebug/byebug.so
36
36
 
37
37
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/byebug-11.1.3/ext/byebug
38
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-ytx9mw sitelibdir\=./.gem.20240217-1744-ytx9mw install
39
- /usr/bin/install -c -m 0755 byebug.so ./.gem.20240217-1744-ytx9mw/byebug
38
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-l50ihl sitelibdir\=./.gem.20240227-1787-l50ihl install
39
+ /usr/bin/install -c -m 0755 byebug.so ./.gem.20240227-1787-l50ihl/byebug
40
40
 
41
41
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/byebug-11.1.3/ext/byebug
42
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-ytx9mw sitelibdir\=./.gem.20240217-1744-ytx9mw clean
42
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-l50ihl sitelibdir\=./.gem.20240227-1787-l50ihl clean
@@ -11,10 +11,10 @@ creating extconf.h
11
11
  creating Makefile
12
12
 
13
13
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/ffi-1.16.3/ext/ffi_c
14
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-aoa846 sitelibdir\=./.gem.20240217-1744-aoa846 clean
14
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-a9crpu sitelibdir\=./.gem.20240227-1787-a9crpu clean
15
15
 
16
16
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/ffi-1.16.3/ext/ffi_c
17
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-aoa846 sitelibdir\=./.gem.20240217-1744-aoa846
17
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-a9crpu sitelibdir\=./.gem.20240227-1787-a9crpu
18
18
  compiling AbstractMemory.c
19
19
  compiling ArrayType.c
20
20
  compiling Buffer.c
@@ -41,8 +41,8 @@ compiling ffi.c
41
41
  linking shared-object ffi_c.so
42
42
 
43
43
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/ffi-1.16.3/ext/ffi_c
44
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-aoa846 sitelibdir\=./.gem.20240217-1744-aoa846 install
45
- /usr/bin/install -c -m 0755 ffi_c.so ./.gem.20240217-1744-aoa846
44
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-a9crpu sitelibdir\=./.gem.20240227-1787-a9crpu install
45
+ /usr/bin/install -c -m 0755 ffi_c.so ./.gem.20240227-1787-a9crpu
46
46
 
47
47
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/ffi-1.16.3/ext/ffi_c
48
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-aoa846 sitelibdir\=./.gem.20240217-1744-aoa846 clean
48
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-a9crpu sitelibdir\=./.gem.20240227-1787-a9crpu clean
@@ -3,10 +3,10 @@ current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/
3
3
  creating Makefile
4
4
 
5
5
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler
6
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-2c6qdd sitelibdir\=./.gem.20240217-1744-2c6qdd clean
6
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-7ydplj sitelibdir\=./.gem.20240227-1787-7ydplj clean
7
7
 
8
8
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler
9
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-2c6qdd sitelibdir\=./.gem.20240217-1744-2c6qdd
9
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-7ydplj sitelibdir\=./.gem.20240227-1787-7ydplj
10
10
  compiling adj_matrix.c
11
11
  adj_matrix.c: In function ‘adj_matrix_default’:
12
12
  adj_matrix.c:82:12: warning: old-style function definition [-Wold-style-definition]
@@ -22,8 +22,8 @@ compiling jaro_winkler.c
22
22
  linking shared-object jaro_winkler/jaro_winkler_ext.so
23
23
 
24
24
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler
25
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-2c6qdd sitelibdir\=./.gem.20240217-1744-2c6qdd install
26
- /usr/bin/install -c -m 0755 jaro_winkler_ext.so ./.gem.20240217-1744-2c6qdd/jaro_winkler
25
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-7ydplj sitelibdir\=./.gem.20240227-1787-7ydplj install
26
+ /usr/bin/install -c -m 0755 jaro_winkler_ext.so ./.gem.20240227-1787-7ydplj/jaro_winkler
27
27
 
28
28
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/jaro_winkler-1.5.6/ext/jaro_winkler
29
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-2c6qdd sitelibdir\=./.gem.20240217-1744-2c6qdd clean
29
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-7ydplj sitelibdir\=./.gem.20240227-1787-7ydplj clean
@@ -3,16 +3,16 @@ current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/
3
3
  creating Makefile
4
4
 
5
5
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/racc-1.7.3/ext/racc/cparse
6
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-rqkkmg sitelibdir\=./.gem.20240217-1744-rqkkmg clean
6
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-pipjtw sitelibdir\=./.gem.20240227-1787-pipjtw clean
7
7
 
8
8
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/racc-1.7.3/ext/racc/cparse
9
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-rqkkmg sitelibdir\=./.gem.20240217-1744-rqkkmg
9
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-pipjtw sitelibdir\=./.gem.20240227-1787-pipjtw
10
10
  compiling cparse.c
11
11
  linking shared-object racc/cparse.so
12
12
 
13
13
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/racc-1.7.3/ext/racc/cparse
14
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-rqkkmg sitelibdir\=./.gem.20240217-1744-rqkkmg install
15
- /usr/bin/install -c -m 0755 cparse.so ./.gem.20240217-1744-rqkkmg/racc
14
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-pipjtw sitelibdir\=./.gem.20240227-1787-pipjtw install
15
+ /usr/bin/install -c -m 0755 cparse.so ./.gem.20240227-1787-pipjtw/racc
16
16
 
17
17
  current directory: /home/runner/work/ruby-sdk/ruby-sdk/vendor/bundle/ruby/3.3.0/gems/racc-1.7.3/ext/racc/cparse
18
- make DESTDIR\= sitearchdir\=./.gem.20240217-1744-rqkkmg sitelibdir\=./.gem.20240217-1744-rqkkmg clean
18
+ make DESTDIR\= sitearchdir\=./.gem.20240227-1787-pipjtw sitelibdir\=./.gem.20240227-1787-pipjtw clean
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: affixapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 1.1.35
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAPI-Generator
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-17 00:00:00.000000000 Z
11
+ date: 2024-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus