first commit
This commit is contained in:
81
.gitignore
vendored
Normal file
81
.gitignore
vendored
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
# Backup files #
|
||||||
|
*.bak
|
||||||
|
|
||||||
|
# If you are using PyCharm #
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/dictionaries
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.xml
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
*.iws /out/
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# Python #
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
.pytest_cache/
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
.hypothesis/
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
.python-version
|
||||||
|
|
||||||
|
# celery
|
||||||
|
celerybeat-schedule.*
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
671
commands.yaml
Normal file
671
commands.yaml
Normal file
@@ -0,0 +1,671 @@
|
|||||||
|
apn_devices:
|
||||||
|
send_push:
|
||||||
|
- name: device_token
|
||||||
|
assignments:
|
||||||
|
create_bulk_assignments:
|
||||||
|
- name: event_set
|
||||||
|
prompt: A comma-delimited string of keywords and/or event_ids. Keywords include
|
||||||
|
'future_events', 'future_games', and 'future_games_and_events'
|
||||||
|
- name: create_as_member_id
|
||||||
|
prompt: aaa
|
||||||
|
- name: team_id
|
||||||
|
prompt: aaa
|
||||||
|
- name: description
|
||||||
|
prompt: aaa
|
||||||
|
- name: member_id
|
||||||
|
prompt: aaa
|
||||||
|
reorder_assignments:
|
||||||
|
- name: event_id
|
||||||
|
- name: sorted_ids
|
||||||
|
prompt: An array of the ids in the order that they are to be moved to
|
||||||
|
send_assignment_emails:
|
||||||
|
- name: event_ids
|
||||||
|
prompt: A comma-delimited list of event ids.
|
||||||
|
- name: message
|
||||||
|
- name: sending_member_id
|
||||||
|
- name: team_id
|
||||||
|
availabilities:
|
||||||
|
bulk_mark_unset_availabilities:
|
||||||
|
- name: status_code
|
||||||
|
- name: member_id
|
||||||
|
- name: started_after
|
||||||
|
batch_invoices:
|
||||||
|
cancel:
|
||||||
|
- name: id
|
||||||
|
create_with_invoices:
|
||||||
|
- name: title
|
||||||
|
- name: description
|
||||||
|
- name: due_at
|
||||||
|
- name: is_recipient_paying_transaction_fees
|
||||||
|
- name: processing_fee_paid_by
|
||||||
|
- name: type
|
||||||
|
- name: division_id
|
||||||
|
- name: team_id
|
||||||
|
- name: batch_invoice_line_items
|
||||||
|
broadcast_alerts:
|
||||||
|
bulk_delete:
|
||||||
|
- name: id
|
||||||
|
broadcast_email_attachments:
|
||||||
|
upload_broadcast_email_attachment:
|
||||||
|
- name: broadcast_email_id
|
||||||
|
- name: member_id
|
||||||
|
- name: file
|
||||||
|
broadcast_emails:
|
||||||
|
bulk_delete:
|
||||||
|
- name: id
|
||||||
|
unflag_spam:
|
||||||
|
- name: id
|
||||||
|
contact_email_addresses:
|
||||||
|
invite:
|
||||||
|
- name: team_id
|
||||||
|
- name: contact_email_address_ids
|
||||||
|
- name: introduction
|
||||||
|
division_events:
|
||||||
|
delete_events:
|
||||||
|
- name: division_event_ids
|
||||||
|
division_events_imports:
|
||||||
|
create_events_import:
|
||||||
|
- name: division_id
|
||||||
|
- name: file
|
||||||
|
delete_imported_events:
|
||||||
|
- name: division_id
|
||||||
|
- name: division_events_import_id
|
||||||
|
process_import:
|
||||||
|
- name: id
|
||||||
|
division_flipgive_widgets:
|
||||||
|
consumed:
|
||||||
|
- name: division_id
|
||||||
|
type: Integer
|
||||||
|
division_locations:
|
||||||
|
import_from_division:
|
||||||
|
- name: destination_division_id
|
||||||
|
- name: source_location_ids
|
||||||
|
division_regsaver_options:
|
||||||
|
dismiss_configure_modal:
|
||||||
|
- name: division_id
|
||||||
|
type: Integer
|
||||||
|
- name: forever
|
||||||
|
type: Boolean
|
||||||
|
division_stores:
|
||||||
|
configure:
|
||||||
|
- name: division_id
|
||||||
|
type: Integer
|
||||||
|
- name: is_active
|
||||||
|
type: Boolean
|
||||||
|
dismiss_configure_modal:
|
||||||
|
- name: division_id
|
||||||
|
type: Integer
|
||||||
|
- name: forever
|
||||||
|
type: Boolean
|
||||||
|
divisions:
|
||||||
|
archive:
|
||||||
|
- name: id
|
||||||
|
connect_season:
|
||||||
|
- name: division_id
|
||||||
|
- name: organization_id
|
||||||
|
- name: program_id
|
||||||
|
- name: season_id
|
||||||
|
- name: season_name
|
||||||
|
- name: league_owner_first_name
|
||||||
|
- name: league_owner_last_name
|
||||||
|
- name: league_owner_email
|
||||||
|
- name: league_owner_phone_number
|
||||||
|
- name: user_id
|
||||||
|
create_root:
|
||||||
|
- name: name
|
||||||
|
- name: sport_id
|
||||||
|
- name: country
|
||||||
|
- name: time_zone
|
||||||
|
- name: postal_code
|
||||||
|
- name: teams_in_plan
|
||||||
|
- name: league_owner_email
|
||||||
|
- name: league_owner_phone_number
|
||||||
|
- name: league_owner_first_name
|
||||||
|
- name: league_owner_last_name
|
||||||
|
create_season:
|
||||||
|
- name: name
|
||||||
|
- name: season_name
|
||||||
|
- name: organization_id
|
||||||
|
- name: program_id
|
||||||
|
- name: season_id
|
||||||
|
- name: sport_id
|
||||||
|
- name: plan_id
|
||||||
|
- name: payment_provider
|
||||||
|
- name: business_type
|
||||||
|
- name: billing_address
|
||||||
|
- name: country
|
||||||
|
- name: time_zone
|
||||||
|
- name: postal_code
|
||||||
|
- name: league_owner_email
|
||||||
|
- name: league_owner_first_name
|
||||||
|
- name: league_owner_last_name
|
||||||
|
- name: user_id
|
||||||
|
- name: from_division_id
|
||||||
|
- name: copy_division_structure
|
||||||
|
- name: copy_team_structure
|
||||||
|
disable:
|
||||||
|
- name: id
|
||||||
|
- name: persistent_uuid
|
||||||
|
enable:
|
||||||
|
- name: id
|
||||||
|
- name: persistent_uuid
|
||||||
|
update_plan:
|
||||||
|
- name: division_id
|
||||||
|
- name: persistent_uuid
|
||||||
|
- name: plan_id
|
||||||
|
- name: teams_in_plan
|
||||||
|
divisions_preferences:
|
||||||
|
remove_division_logo:
|
||||||
|
- name: division_preferences_id
|
||||||
|
upload_division_logo:
|
||||||
|
- name: division_preferences_id
|
||||||
|
- name: file
|
||||||
|
event_lineup_entries:
|
||||||
|
bulk_update_event_lineup_entries:
|
||||||
|
- name: templates
|
||||||
|
prompt: 'An array of the event_lineup_entry templates to be updated that correspond
|
||||||
|
to the template for the rel ''event_lineup_entries''. Each template must have
|
||||||
|
the following elements present: event_lineup_id, member_id, label, sequence.'
|
||||||
|
events:
|
||||||
|
bulk_create:
|
||||||
|
- name: templates
|
||||||
|
- name: team_id
|
||||||
|
- name: notify_team_as_member_id
|
||||||
|
- name: notify_team
|
||||||
|
send_availability_reminders:
|
||||||
|
- name: id
|
||||||
|
- name: members_to_notify
|
||||||
|
- name: notify_team_as_member_id
|
||||||
|
update_final_score:
|
||||||
|
- name: id
|
||||||
|
- name: points_for_team
|
||||||
|
- name: points_for_opponent
|
||||||
|
- name: shootout_points_for_team
|
||||||
|
- name: shootout_points_for_opponent
|
||||||
|
- name: is_overtime
|
||||||
|
- name: is_shootout
|
||||||
|
- name: results
|
||||||
|
- name: results_url
|
||||||
|
gcm_devices:
|
||||||
|
refresh_device:
|
||||||
|
- name: id
|
||||||
|
- name: registration_id
|
||||||
|
- name: user_id
|
||||||
|
- name: app_version
|
||||||
|
send_push:
|
||||||
|
- name: registration_id
|
||||||
|
invoice_messages:
|
||||||
|
payment_request:
|
||||||
|
- name: batch_invoice_id
|
||||||
|
- name: member_ids
|
||||||
|
- name: status
|
||||||
|
- name: subject
|
||||||
|
- name: body
|
||||||
|
invoice_payment_schedules:
|
||||||
|
update_default_payment_method:
|
||||||
|
- name: invoice_payment_schedule_id
|
||||||
|
- name: credit_card_id
|
||||||
|
update_stripe_default_payment_method:
|
||||||
|
- name: invoice_payment_schedule_id
|
||||||
|
- name: credit_card_id
|
||||||
|
- name: email_address
|
||||||
|
invoice_payments:
|
||||||
|
pay_offline_cash:
|
||||||
|
- name: invoice_id
|
||||||
|
- name: amount
|
||||||
|
- name: detail
|
||||||
|
pay_offline_check:
|
||||||
|
- name: invoice_id
|
||||||
|
- name: amount
|
||||||
|
- name: detail
|
||||||
|
pay_stripe_credit_card:
|
||||||
|
- name: invoice_id
|
||||||
|
- name: credit_card_id
|
||||||
|
- name: amount
|
||||||
|
- name: email_address
|
||||||
|
pay_wepay_credit_card:
|
||||||
|
- name: invoice_id
|
||||||
|
- name: credit_card_id
|
||||||
|
- name: amount
|
||||||
|
pay_with_payment_schedule_stripe_credit_card:
|
||||||
|
- name: invoice_id
|
||||||
|
- name: credit_card_id
|
||||||
|
- name: email_address
|
||||||
|
- name: confirm_dates_amounts
|
||||||
|
prompt: 'Confirm dates and amounts presented (including fees) for each payment
|
||||||
|
(deposit and scheduled). Expected: [{''payment_date'': ''2018-05-08'', ''payment_total'':
|
||||||
|
258.47, ''is_deposit'': true}, {...}, ...]. If they don''t match the generated
|
||||||
|
dates and amounts, an error will be returned.'
|
||||||
|
pay_with_payment_schedule_wepay_credit_card:
|
||||||
|
- name: invoice_id
|
||||||
|
- name: credit_card_id
|
||||||
|
- name: confirm_dates_amounts
|
||||||
|
prompt: 'Confirm dates and amounts presented (including fees) for each payment
|
||||||
|
(deposit and scheduled). Expected: [{''payment_date'': ''2018-05-08'', ''payment_total'':
|
||||||
|
258.47, ''is_deposit'': true}, {...}, ...]. If they don''t match the generated
|
||||||
|
dates and amounts, an error will be returned.'
|
||||||
|
record_failed_stripe_payment:
|
||||||
|
- name: invoice_payment_id
|
||||||
|
- name: error_description
|
||||||
|
record_failed_wepay_payment:
|
||||||
|
- name: invoice_payment_id
|
||||||
|
- name: wepay_error_id
|
||||||
|
- name: error_description
|
||||||
|
record_paid_wepay_payment:
|
||||||
|
- name: invoice_payment_id
|
||||||
|
- name: credit_card_id
|
||||||
|
- name: amount
|
||||||
|
- name: teamsnap_processing_fee
|
||||||
|
- name: wepay_processing_fee
|
||||||
|
record_pending_wepay_payment:
|
||||||
|
- name: invoice_payment_id
|
||||||
|
- name: wepay_checkout_id
|
||||||
|
- name: credit_card_id
|
||||||
|
- name: reference_id
|
||||||
|
- name: amount
|
||||||
|
- name: teamsnap_processing_fee
|
||||||
|
- name: wepay_processing_fee
|
||||||
|
record_refunded_wepay_payment:
|
||||||
|
- name: invoice_payment_id
|
||||||
|
- name: credit_card_id
|
||||||
|
- name: amount
|
||||||
|
- name: refund_reason
|
||||||
|
- name: teamsnap_processing_fee
|
||||||
|
- name: wepay_processing_fee
|
||||||
|
refund_offline_cash:
|
||||||
|
- name: invoice_payment_id
|
||||||
|
- name: amount
|
||||||
|
- name: detail
|
||||||
|
refund_offline_check:
|
||||||
|
- name: invoice_payment_id
|
||||||
|
- name: amount
|
||||||
|
- name: detail
|
||||||
|
refund_online_payment:
|
||||||
|
- name: invoice_payment_id
|
||||||
|
- name: detail
|
||||||
|
invoices:
|
||||||
|
cancel:
|
||||||
|
- name: id
|
||||||
|
create_from_batch_invoice:
|
||||||
|
- name: batch_invoice_id
|
||||||
|
- name: member_ids
|
||||||
|
prompt: An array of member ids for whom the invoices will be created.
|
||||||
|
league_custom_fields:
|
||||||
|
reorder:
|
||||||
|
- name: sorted_ids
|
||||||
|
- name: division_id
|
||||||
|
locations:
|
||||||
|
import_from_team:
|
||||||
|
- name: destination_team_id
|
||||||
|
- name: source_location_ids
|
||||||
|
me:
|
||||||
|
send_email_validation: []
|
||||||
|
send_fomo_email:
|
||||||
|
- name: sender_user_id
|
||||||
|
- name: recipient_user_ids
|
||||||
|
- name: team_id
|
||||||
|
- name: message
|
||||||
|
send_trial_expiring_reminder: []
|
||||||
|
member_email_addresses:
|
||||||
|
invite:
|
||||||
|
- name: team_id
|
||||||
|
- name: member_id
|
||||||
|
- name: member_email_address_ids
|
||||||
|
- name: introduction
|
||||||
|
- name: notify_as_member_id
|
||||||
|
member_files:
|
||||||
|
upload_member_file:
|
||||||
|
- name: member_file_id
|
||||||
|
- name: file
|
||||||
|
member_payments:
|
||||||
|
transaction:
|
||||||
|
- name: member_payment_id
|
||||||
|
- name: amount
|
||||||
|
- name: note
|
||||||
|
members:
|
||||||
|
bulk_delete:
|
||||||
|
- name: member_id
|
||||||
|
prompt: The id of the member to be deleted, this can either be passed as a comma-delimited
|
||||||
|
list of integers or as an array if the post data is JSON.
|
||||||
|
delete_pending_member:
|
||||||
|
- name: member_id
|
||||||
|
prompt: The id of the pending member or pending members to be moved, this can
|
||||||
|
either be passed as a comma-delimited list of integers or as an array if the
|
||||||
|
post data is JSON.
|
||||||
|
- name: division_id
|
||||||
|
prompt: The id of the division or divisions to determine pending members, this
|
||||||
|
can either be passed as a comma-delimited list of integers or as an array if
|
||||||
|
the post data is JSON.
|
||||||
|
- name: team_id
|
||||||
|
prompt: The id of the team or teams to determine pending members, this can either
|
||||||
|
be passed as a comma-delimited list of integers or as an array if the post data
|
||||||
|
is JSON.
|
||||||
|
disable_member:
|
||||||
|
- name: member_id
|
||||||
|
generate_member_thumbnail:
|
||||||
|
- name: member_id
|
||||||
|
- name: x
|
||||||
|
- name: y
|
||||||
|
- name: width
|
||||||
|
- name: height
|
||||||
|
import_from_team:
|
||||||
|
- name: source_member_ids
|
||||||
|
- name: destination_team_id
|
||||||
|
- name: send_invites
|
||||||
|
prompt: Whether or not to create and send invitations for each imported member.
|
||||||
|
Valid values are either 'true' or 'false' and will default to 'false'
|
||||||
|
move_member:
|
||||||
|
- name: member_id
|
||||||
|
prompt: The id of the member or members to be moved, this can either be passed
|
||||||
|
as a comma-delimited list of integers or as an array if the post data is JSON.
|
||||||
|
- name: division_id
|
||||||
|
- name: team_id
|
||||||
|
- name: pending
|
||||||
|
move_pending_member:
|
||||||
|
- name: member_id
|
||||||
|
prompt: The id of the pending member or pending members to be moved, this can
|
||||||
|
either be passed as a comma-delimited list of integers or as an array if the
|
||||||
|
post data is JSON.
|
||||||
|
- name: division_id
|
||||||
|
prompt: The id of the division or divisions to determine pending members, this
|
||||||
|
can either be passed as a comma-delimited list of integers or as an array if
|
||||||
|
the post data is JSON.
|
||||||
|
- name: team_id
|
||||||
|
prompt: The id of the team or teams to determine pending members, this can either
|
||||||
|
be passed as a comma-delimited list of integers or as an array if the post data
|
||||||
|
is JSON.
|
||||||
|
remove_member_photo:
|
||||||
|
- name: member_id
|
||||||
|
set_commissioner_access:
|
||||||
|
- name: member_id
|
||||||
|
- name: division_id
|
||||||
|
upload_member_photo:
|
||||||
|
- name: member_id
|
||||||
|
- name: file
|
||||||
|
- name: x
|
||||||
|
- name: y
|
||||||
|
- name: width
|
||||||
|
- name: height
|
||||||
|
messages:
|
||||||
|
bulk_delete:
|
||||||
|
- name: id
|
||||||
|
mark_message_as_read:
|
||||||
|
- name: id
|
||||||
|
mobile_advertising_identities:
|
||||||
|
mobile_advertising_identities:
|
||||||
|
- name: device_advertising_uuid
|
||||||
|
- name: user_id
|
||||||
|
- name: platform
|
||||||
|
- name: ip_address
|
||||||
|
program_members:
|
||||||
|
run_pipeline:
|
||||||
|
- name: division_ids
|
||||||
|
prompt: A comma-delimited list of division ids.
|
||||||
|
- name: action
|
||||||
|
prompt: A string with the originating action.
|
||||||
|
root:
|
||||||
|
initiate_registration:
|
||||||
|
- name: email_address
|
||||||
|
- name: client_id
|
||||||
|
- name: redirect_uri
|
||||||
|
send_invitations:
|
||||||
|
- name: email_address
|
||||||
|
welcome:
|
||||||
|
- name: email_address
|
||||||
|
- name: client_id
|
||||||
|
- name: redirect_uri
|
||||||
|
self:
|
||||||
|
initiate_registration:
|
||||||
|
- name: email_address
|
||||||
|
- name: client_id
|
||||||
|
- name: redirect_uri
|
||||||
|
send_invitations:
|
||||||
|
- name: email_address
|
||||||
|
welcome:
|
||||||
|
- name: email_address
|
||||||
|
- name: client_id
|
||||||
|
- name: redirect_uri
|
||||||
|
sponsors:
|
||||||
|
remove_sponsor_logo:
|
||||||
|
- name: sponsor_id
|
||||||
|
upload_sponsor_logo:
|
||||||
|
- name: sponsor_id
|
||||||
|
- name: file
|
||||||
|
statistic_data:
|
||||||
|
bulk_delete_statistic_data:
|
||||||
|
- name: member_id
|
||||||
|
- name: event_id
|
||||||
|
bulk_update_statistic_data:
|
||||||
|
- name: templates
|
||||||
|
prompt: 'An array of the statistic_datum templates to be updated that correspond
|
||||||
|
to the template for the rel ''statistic_datum''. Each template must have the
|
||||||
|
following elements present: team_id, event_id, statistic_id.'
|
||||||
|
statistic_groups:
|
||||||
|
reorder_statistic_groups:
|
||||||
|
- name: team_id
|
||||||
|
- name: sorted_ids
|
||||||
|
prompt: An array of the ids in the order that they are to be moved to
|
||||||
|
statistics:
|
||||||
|
import_from_team:
|
||||||
|
- name: source_team_id
|
||||||
|
- name: destination_team_id
|
||||||
|
import_from_template:
|
||||||
|
- name: destination_team_id
|
||||||
|
- name: sport_id
|
||||||
|
reorder_statistics:
|
||||||
|
- name: team_id
|
||||||
|
- name: sorted_ids
|
||||||
|
prompt: An array of the ids in the order that they are to be moved to
|
||||||
|
stripe_account_access_grants:
|
||||||
|
grant:
|
||||||
|
- name: division_id
|
||||||
|
- name: team_id
|
||||||
|
- name: stripe_account_id
|
||||||
|
revoke:
|
||||||
|
- name: id
|
||||||
|
stripe_accounts:
|
||||||
|
update_by_stripe_account_id:
|
||||||
|
- name: account_id
|
||||||
|
- name: is_merchant
|
||||||
|
- name: has_charges_enabled
|
||||||
|
team_media:
|
||||||
|
assign_media_to_group:
|
||||||
|
- name: team_medium_ids
|
||||||
|
prompt: A comma delimited list of team medium ids
|
||||||
|
- name: team_media_group_id
|
||||||
|
bulk_delete_team_media:
|
||||||
|
- name: team_medium_ids
|
||||||
|
prompt: A comma delimited list of team medium ids
|
||||||
|
create_team_video_link:
|
||||||
|
- name: team_id
|
||||||
|
- name: member_id
|
||||||
|
- name: team_media_group_id
|
||||||
|
- name: description
|
||||||
|
- name: position
|
||||||
|
- name: video_url
|
||||||
|
facebook_share_team_medium:
|
||||||
|
- name: team_medium_id
|
||||||
|
- name: is_suppressed_from_feed
|
||||||
|
prompt: Whether or not to post this to the facebook news feed. Valid values are
|
||||||
|
either 'true' or 'false' and will default to 'false'
|
||||||
|
- name: caption
|
||||||
|
prompt: Caption for the team media.
|
||||||
|
- name: facebook_page_id
|
||||||
|
prompt: The id to the page on facebook to post to.
|
||||||
|
reorder_team_media:
|
||||||
|
- name: team_id
|
||||||
|
- name: sorted_ids
|
||||||
|
prompt: An array of the ids in the order that they are to be moved to.
|
||||||
|
rotate_team_medium_image:
|
||||||
|
- name: team_medium_id
|
||||||
|
- name: rotate_direction
|
||||||
|
prompt: The direction to rotate the image, valid valiuse are "clockwise" or "counterclockwise"
|
||||||
|
set_medium_as_member_photo:
|
||||||
|
- name: team_medium_id
|
||||||
|
- name: member_id
|
||||||
|
set_medium_as_team_photo:
|
||||||
|
- name: team_medium_id
|
||||||
|
upload_team_medium:
|
||||||
|
- name: team_id
|
||||||
|
- name: member_id
|
||||||
|
- name: media_format
|
||||||
|
prompt: The format of the media, either "image" or "file"
|
||||||
|
- name: team_media_group_id
|
||||||
|
- name: description
|
||||||
|
- name: position
|
||||||
|
- name: file
|
||||||
|
team_media_groups:
|
||||||
|
facebook_share_team_media_group:
|
||||||
|
- name: team_media_group_id
|
||||||
|
- name: is_suppressed_from_feed
|
||||||
|
prompt: Whether or not to post this to the facebook news feed. Valid values are
|
||||||
|
either 'true' or 'false' and will default to 'false'
|
||||||
|
- name: album_name
|
||||||
|
prompt: The caption used when sharing the medium on facebook. This will default
|
||||||
|
to the description of the medium
|
||||||
|
- name: facebook_page_id
|
||||||
|
prompt: The id used by facebook of the page to post the medium to. If omitted,
|
||||||
|
this will go to the user's personal page.
|
||||||
|
reorder_team_media_groups:
|
||||||
|
- name: team_id
|
||||||
|
- name: sorted_ids
|
||||||
|
prompt: An array of the ids in the order that they are to be moved to
|
||||||
|
team_public_sites:
|
||||||
|
remove_team_public_photo:
|
||||||
|
- name: team_public_site_id
|
||||||
|
upload_team_public_photo:
|
||||||
|
- name: team_public_site_id
|
||||||
|
- name: file
|
||||||
|
validate_subdomain:
|
||||||
|
- name: subdomain
|
||||||
|
team_stores:
|
||||||
|
configure_team_store:
|
||||||
|
- name: team_id
|
||||||
|
teams:
|
||||||
|
apply_promotion:
|
||||||
|
- name: team_ids
|
||||||
|
- name: promotion_name
|
||||||
|
- name: promotion_length
|
||||||
|
- name: plan_id
|
||||||
|
change_owner:
|
||||||
|
- name: team_id
|
||||||
|
- name: member_id
|
||||||
|
enable_fundraising:
|
||||||
|
- name: team_id
|
||||||
|
- name: goal_cents
|
||||||
|
invite:
|
||||||
|
- name: team_id
|
||||||
|
- name: contact_id
|
||||||
|
- name: member_id
|
||||||
|
- name: introduction
|
||||||
|
- name: notify_as_member_id
|
||||||
|
invite_team_owners:
|
||||||
|
- name: id
|
||||||
|
reset_statistics:
|
||||||
|
- name: team_id
|
||||||
|
send_upsell_message_from_contact:
|
||||||
|
- name: team_id
|
||||||
|
- name: contact_id
|
||||||
|
- name: feature
|
||||||
|
send_upsell_message_from_owner:
|
||||||
|
- name: team_id
|
||||||
|
- name: feature
|
||||||
|
toggle_team_visibility_on_dashboard:
|
||||||
|
- name: team_ids
|
||||||
|
update_team_plan:
|
||||||
|
- name: team_ids
|
||||||
|
- name: plan_id
|
||||||
|
update_time_zone:
|
||||||
|
- name: team_id
|
||||||
|
- name: time_zone
|
||||||
|
- deprecated: true
|
||||||
|
name: offset_team_times
|
||||||
|
prompt: '%{old} is deprecated and will be removed in a future version, use %{new}
|
||||||
|
instead.'
|
||||||
|
teams_preferences:
|
||||||
|
remove_team_logo:
|
||||||
|
- name: team_preferences_id
|
||||||
|
remove_team_photo:
|
||||||
|
- name: team_preferences_id
|
||||||
|
upload_team_logo:
|
||||||
|
- name: team_preferences_id
|
||||||
|
- name: file
|
||||||
|
upload_team_photo:
|
||||||
|
- name: team_preferences_id
|
||||||
|
- name: file
|
||||||
|
tsl_chats:
|
||||||
|
send_push:
|
||||||
|
- name: device_token
|
||||||
|
- name: event_id
|
||||||
|
- name: firebase_id
|
||||||
|
- name: member_id
|
||||||
|
- name: message
|
||||||
|
- name: team_id
|
||||||
|
- name: timestamp
|
||||||
|
- name: type
|
||||||
|
- name: url
|
||||||
|
- name: username
|
||||||
|
tsl_photos:
|
||||||
|
upload:
|
||||||
|
- name: team_id
|
||||||
|
- name: event_id
|
||||||
|
- name: user_id
|
||||||
|
- name: redirect
|
||||||
|
- name: max_file_size
|
||||||
|
- name: max_file_count
|
||||||
|
- name: expires
|
||||||
|
- name: signature
|
||||||
|
- name: file1
|
||||||
|
tsl_scores:
|
||||||
|
send_push:
|
||||||
|
- name: device_token
|
||||||
|
- name: event_id
|
||||||
|
- name: firebase_id
|
||||||
|
- name: game_state
|
||||||
|
- name: member_id
|
||||||
|
- name: opponent_name
|
||||||
|
- name: score_for
|
||||||
|
- name: score_against
|
||||||
|
- name: sport_score_style
|
||||||
|
- name: team_id
|
||||||
|
- name: team_name
|
||||||
|
- name: timestamp
|
||||||
|
user_team_experiences:
|
||||||
|
record_occurrence_user_team_experience:
|
||||||
|
- name: experience
|
||||||
|
- name: team_id
|
||||||
|
users:
|
||||||
|
send_email_validation: []
|
||||||
|
send_fomo_email:
|
||||||
|
- name: sender_user_id
|
||||||
|
- name: recipient_user_ids
|
||||||
|
- name: team_id
|
||||||
|
- name: message
|
||||||
|
send_trial_expiring_reminder: []
|
||||||
|
wepay_account_access_grants:
|
||||||
|
grant:
|
||||||
|
- name: team_id
|
||||||
|
- name: wepay_account_id
|
||||||
|
revoke:
|
||||||
|
- name: id
|
||||||
|
wepay_accounts:
|
||||||
|
create_with_access:
|
||||||
|
- name: team_id
|
||||||
|
- name: email
|
||||||
|
- name: first_name
|
||||||
|
- name: last_name
|
||||||
|
- name: account_name
|
||||||
|
- name: account_description
|
||||||
|
- name: country_code
|
||||||
|
record_wepay_account_data:
|
||||||
|
- name: reference_id
|
||||||
|
- name: wepay_account_id
|
||||||
|
- name: wepay_account_state
|
||||||
|
- name: wepay_access_token
|
||||||
|
- name: wepay_action_reasons
|
||||||
|
- name: wepay_disabled_at
|
||||||
|
- name: wepay_user_id
|
||||||
|
revoke_access:
|
||||||
|
- name: reference_id
|
||||||
|
send_confirmation:
|
||||||
|
- name: id
|
||||||
27
generate_schema_file.py
Normal file
27
generate_schema_file.py
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
from apiclient import HeaderAuthentication
|
||||||
|
from apiclient import JsonResponseHandler
|
||||||
|
from tests.credentials import token
|
||||||
|
from tests.private_test import TeamSnap
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
schema = {}
|
||||||
|
|
||||||
|
c = TeamSnap(authentication_method=HeaderAuthentication(token=token), response_handler=JsonResponseHandler)
|
||||||
|
|
||||||
|
def generate_schema(verb='queries'):
|
||||||
|
for rel, link in c._links.items():
|
||||||
|
for query, details in c._by_rel(link['href'], verb).items():
|
||||||
|
if not schema.get(rel):
|
||||||
|
schema[rel] = {}
|
||||||
|
try:
|
||||||
|
d = details['data']
|
||||||
|
schema[rel][query] = [{k:v for k,v in data.items() if k not in ['value']} for data in details['data']]
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
print (f"{query=}")
|
||||||
|
|
||||||
|
with open(f'{verb}.yaml', 'w') as f:
|
||||||
|
yaml.dump(schema,f)
|
||||||
|
pass
|
||||||
|
|
||||||
|
generate_schema('queries')
|
||||||
1767
queries.yaml
Normal file
1767
queries.yaml
Normal file
File diff suppressed because it is too large
Load Diff
0
scratch.py
Normal file
0
scratch.py
Normal file
3
teamsnap/__init__.py
Normal file
3
teamsnap/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
from .api import TeamSnap
|
||||||
|
|
||||||
|
__all__ = ['TeamSnap']
|
||||||
111
teamsnap/api.py
Normal file
111
teamsnap/api.py
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
__all__ = ['TeamSnap', 'Team', 'Event', 'Availability']
|
||||||
|
|
||||||
|
from apiclient import APIClient, HeaderAuthentication, JsonResponseHandler
|
||||||
|
from collection_json import Collection
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
class ApiObject():
|
||||||
|
rel = None
|
||||||
|
|
||||||
|
def __init__(self, client, rel=rel, data={}):
|
||||||
|
self.client = client
|
||||||
|
self.data = data
|
||||||
|
self.rel = rel
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def search(cls, client, **kwargs):
|
||||||
|
results = client.query(cls.rel, "search", **kwargs)
|
||||||
|
return [cls(client,rel=cls.rel, data=r) for r in results]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get(cls, client, id):
|
||||||
|
r = client.get(f"{client.link(cls.rel)}/{id}")
|
||||||
|
return cls(client, cls.rel, client.parse_response(r)[0])
|
||||||
|
|
||||||
|
class Me (ApiObject):
|
||||||
|
rel = "me"
|
||||||
|
|
||||||
|
def __init__(self, client):
|
||||||
|
super().__init__(client=client, rel=self.rel, data=client.get(client.link(self.rel)))
|
||||||
|
|
||||||
|
class Event (ApiObject):
|
||||||
|
rel = "events"
|
||||||
|
|
||||||
|
class Team (ApiObject):
|
||||||
|
rel = "teams"
|
||||||
|
pass
|
||||||
|
|
||||||
|
class Availability (ApiObject):
|
||||||
|
rel = "availabilities"
|
||||||
|
pass
|
||||||
|
|
||||||
|
class TeamSnap(APIClient):
|
||||||
|
base_url = 'https://api.teamsnap.com/v3'
|
||||||
|
|
||||||
|
def __init__(self, token, *args, **kwargs):
|
||||||
|
super().__init__(*args,
|
||||||
|
authentication_method=HeaderAuthentication(token=token),
|
||||||
|
response_handler=JsonResponseHandler,
|
||||||
|
**kwargs)
|
||||||
|
self._root_collection = self.get(self.base_url)['collection']
|
||||||
|
self._links = self._by_rel(self.base_url, 'links')
|
||||||
|
self._queries = self._by_rel(self.base_url, 'queries')
|
||||||
|
self._commands = self._by_rel(self.base_url, 'commands')
|
||||||
|
pass
|
||||||
|
|
||||||
|
def link(self, link_name):
|
||||||
|
d = {l['rel']:l['href'] for l in self._root_collection["links"]}
|
||||||
|
return d.get(link_name)
|
||||||
|
|
||||||
|
def _by_rel (self, url, k):
|
||||||
|
try:
|
||||||
|
{l['rel']: l for l in self._root_collection[k]}
|
||||||
|
except Exception as e:
|
||||||
|
return {}
|
||||||
|
self.get(url)['collection'][k]
|
||||||
|
return {l['rel']:l for l in self.get(url)['collection'][k]}
|
||||||
|
|
||||||
|
def query (self, rel, query, **kwargs):
|
||||||
|
queries = self._by_rel(self._get_href(rel), 'queries')
|
||||||
|
response = self.get(self._get_href(query, queries), params=kwargs)
|
||||||
|
return self.parse_response(response)
|
||||||
|
|
||||||
|
def command (self, rel, command, **kwargs):
|
||||||
|
commands = self._by_rel(self._get_href(rel), 'commands')
|
||||||
|
response = self.get(self._get_href(command, commands), params=kwargs)
|
||||||
|
return self.parse_response(response)
|
||||||
|
|
||||||
|
def _get_href (self, rel: str, links:dict = None, url = base_url) -> str:
|
||||||
|
"""returns a hyperlink from a the links dictionary. Each item in the links dictionary is a
|
||||||
|
dictionary with a rel and href key"""
|
||||||
|
if links is None: links = self._by_rel(url, 'links')
|
||||||
|
link = links[rel]['href']
|
||||||
|
return link
|
||||||
|
|
||||||
|
def get_item (self, rel, id):
|
||||||
|
r = self.get(f"{self.link(rel)}/{id}")
|
||||||
|
return self.parse_response(r)[0]
|
||||||
|
|
||||||
|
def get_collection(self, rel, id=None):
|
||||||
|
if id:
|
||||||
|
url = f"{self.link(rel)}/{id}"
|
||||||
|
else:
|
||||||
|
url = f"{self.link(rel)}"
|
||||||
|
r = self.get(url)
|
||||||
|
return Collection.from_json(json.dumps(r))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def parse_response(self, response):
|
||||||
|
result = []
|
||||||
|
items = [item['data'] for item in response['collection'].get('items',[])]
|
||||||
|
for item in response['collection'].get('items',[]):
|
||||||
|
details = {}
|
||||||
|
for detail in item['data']:
|
||||||
|
# TODO type casting and validation based on item['type']
|
||||||
|
details[detail['name']] = detail['value']
|
||||||
|
result.append(details)
|
||||||
|
|
||||||
|
return result
|
||||||
|
# return [{detail['name']: detail['value'] for detail in item} for item in items]
|
||||||
|
|
||||||
21
teamsnap/models.py
Normal file
21
teamsnap/models.py
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Optional
|
||||||
|
from teamsnap.api import TeamSnap
|
||||||
|
from urllib.parse import urljoin
|
||||||
|
|
||||||
|
class Item:
|
||||||
|
id: int
|
||||||
|
type: str
|
||||||
|
data: dict = {}
|
||||||
|
|
||||||
|
def __init__(self, client:TeamSnap, rel, id, data: dict = {}):
|
||||||
|
self._client = client
|
||||||
|
self.type = rel
|
||||||
|
self.id = id
|
||||||
|
self._data = data
|
||||||
|
|
||||||
|
@property
|
||||||
|
def data(self):
|
||||||
|
if self._data: return self._data
|
||||||
|
else:
|
||||||
|
return self._client.get_item(self.type, self.id)
|
||||||
2
tests/credentials.py
Normal file
2
tests/credentials.py
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
token="u2SqDq78FumVvhkt1D-V1CQ2ZIaB-nUVlzGwd1YhGtA"
|
||||||
|
team_id = 7644001
|
||||||
22
tests/private_test.py
Normal file
22
tests/private_test.py
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import unittest
|
||||||
|
from credentials import team_id as TEAM_ID
|
||||||
|
from credentials import token as TOKEN
|
||||||
|
from teamsnap import TeamSnap
|
||||||
|
from teamsnap.models import Item
|
||||||
|
from teamsnap.api import Team, Event, Availability, Me, ApiObject
|
||||||
|
import teamsnap
|
||||||
|
TEAM_ID = 7644001
|
||||||
|
EVENT_1 = 239261604
|
||||||
|
|
||||||
|
c = TeamSnap(token=TOKEN)
|
||||||
|
es = Event.search(c, team_id=TEAM_ID)
|
||||||
|
q1 = c.query("events", "search", team_id=TEAM_ID)
|
||||||
|
team = c.teams.get(TEAM_ID)
|
||||||
|
event = Item(client=c, rel="events", id=EVENT_1)
|
||||||
|
# event = c.events.get(239261604)
|
||||||
|
col = c.get_collection(rel="events", id=EVENT_1)
|
||||||
|
print(event.data)
|
||||||
|
pass
|
||||||
|
# q2 = c.events.search(team_id=TEAM_ID)
|
||||||
|
# a = c.availabilities.search(event_id=q2[0]['id'])
|
||||||
|
# print(q1==q2)
|
||||||
Reference in New Issue
Block a user